从android发送json字符串到C#web服务

时间:2012-05-13 11:50:29

标签: c# android json service web

我正在试图通过json c #web服务来配合我的android应用程序 我必须从Web服务检索一个json对象,但我没有将json对象发送到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");
         }

我获得状态码500。 相反,如果我将Web方法更改为

public void recibePosicion()

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

请我提出任何解决该问题的提示。

感谢。

1 个答案:

答案 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);
    
    }