0

我正在尝试将我的 android 应用程序与 json c# web 服务通信,我必须从 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);


    }

这是我的安卓代码

    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。相反,如果我将网络方法更改为

公共无效recibePosicion()

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

请我感谢任何提示来解决该问题。

谢谢。

4

1 回答 1

-1

您的代码中几乎没有错误:

  1. WebMethod 必须是static
  2. 您想在 webmethod 中获取 json 对象,但您的 webmethod 的参数是 type 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);
    
    }
    
于 2012-05-13T14:32:10.673 回答