2012-05-13 110 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

相關問題