2012-05-13 65 views
0

我正在试图通过json c#web服务来交流我的android应用程序 我得到从Web服务检索json对象,但我失败发送一个json对象到web服务。发送json字符串到C#web服务从android

这里是我的web服务代码

[WebMethod] 
    public void recibePosicion(string json_cad) 
    { 

     JavaScriptSerializer jss = new JavaScriptSerializer(); 
     Posicion nueva_posicion = jss.Deserialize<Posicion>(json_cad); 
     PosicionDAO posicion_dao = new PosicionDAO(); 
     posicion_dao.InsertaPosicion(nueva_posicion); 


    } 

这里是我的Andorid代码

HttpClient client = new DefaultHttpClient(); 
     HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); //Timeout Limit 
     HttpResponse response; 
     JSONObject json = new JSONObject(); 

     try 
     { 
      HttpPost post = new HttpPost("http://10.0.2.2:1218/JSON.asmx/recibePosicion"); 
      post.setHeader("Accept", "application/json"); 
      post.setHeader("Content-type", "application/json"); 


      json.put("idPosicion", "-1"); 
      json.put("x", "100"); 
      json.put("y", "200"); 
      StringEntity se = new StringEntity(json.toString(), HTTP.UTF_8); 
      se.setContentType("application/json"); 
      post.setEntity(se);         

      HttpResponse getResponse = client.execute(post); 

      final int statusCode = getResponse.getStatusLine().getStatusCode(); 

      if (statusCode != HttpStatus.SC_OK) { 
       Log.w(getClass().getSimpleName(), "Error " + statusCode + " for URL " + url); 
       return null; 
      } 





     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
      System.out.println("Cannot Estabilish Connection"); 
     } 

我得到的StatusCode 500 相反,如果我更改Web方法

公共无效recibePosicion()

我打电话给服务但我不知道如何获取json数据。

请问我会apreciate任何提示来解决这个问题。

谢谢。

+0

什么异常是由服务器抛出? – zmbq

+0

1.将'static'添加到asp.net WebMethod'public static void recibePosicion(string json_cad)'2.使用'json.toString()'时得到的字符串3.调试程序 – Coder

+0

解决了问题吗? –

回答

-1

有在你的代码一些错误:

  1. 的WebMethod必须static
  2. 你想要得到的webmethod JSON对象,但你的WebMethod的 参数是string类型,将其更改为object,而不是:

    [WebMethod] 
    public static void recibePosicion(object json_cad){ 
    
        JavaScriptSerializer jss = new JavaScriptSerializer(); 
        Posicion nueva_posicion = jss.Deserialize<Posicion>(json_cad); 
        PosicionDAO posicion_dao = new PosicionDAO(); 
        posicion_dao.InsertaPosicion(nueva_posicion); 
    
    } 
    
+0

您好编码器,我已经尝试使方法静态,并将参数类型更改为对象,但我不断收到statusCode 500在客户端服务器无法接通电话。 – Juan

+0

当我做json.toString我发送的cad看起来如下: – Juan

+0

{“y”:“200”,“idPosicion”:“ - 1”,“x”:“100”} – Juan

相关问题