2016-03-12 78 views
0

我使用此tutorial來使用HttpRULConnection將信息發佈到服務器。以下是我的代碼:無法使用httpurlconnection發佈參數

String urlParameters = "username=" + username + "&regid=" + uuid; 
    byte[] postData = urlParameters.getBytes(StandardCharsets.UTF_8); 

    try { 
     URL url = new URL(server_uri); 

     try { 
      HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      conn.setDoOutput(true); 
      conn.setDoInput(true); 
      conn.setRequestMethod("POST"); 
      conn.setRequestProperty("X-latitude", "40.7439905"); 
      conn.setRequestProperty("X-longitude", "-74.0323626"); 
      conn.setRequestProperty("charset", "utf-8"); 
      conn.setRequestProperty("Content-Length", Integer.toString(postData.length)); 
      conn.setUseCaches(false); 

      int responseCode = conn.getResponseCode(); 
      Log.d("responseCode", responseCode + ""); 

      //send register request 
      OutputStream wr = conn.getOutputStream(); 
      wr.write(postData); 
      wr.flush(); 
      wr.close(); 

      //get response 
      ......... 

      Log.d("registration_id", registerResponse.registration_id+""); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } 

然而,logcat的說: content-length promised 54 bytes, but received 0。 這意味着參數未成功發佈。 而在我的服務器上,它也顯示: username=null, uuid=null

在此先感謝。

+0

我會推薦使用Volley。如果你想我可以給你幫助。 –

+0

因此,您在發佈數據之前請求回覆代碼!? – greenapps

+0

@MishoZhghenti是的,我明白這一點! – sydridgm

回答

0

這是如何通過Volley發送數據到服務器。

首先去Gradle並導入庫。粘貼到這個dependencies
`編譯 'me.neavo:凌空:2014年12月9日'

private Map<String, String> data; 

`

StringRequest stringRequest = new StringRequest(Request.Method.POST, SERVER_URL, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Toast.makeText(context, error.toString(), Toast.LENGTH_LONG).show(); 
       } 
      }) { 
     @Override 
     protected Map<String, String> getParams() { 
      // puts the data (which goes to server) 
      data.put("name",user_name); 
      data.put("gender",user_gender); 

      data.toString(); 
      return data; 
     } 
    }; 
    RequestQueue requestQueue = Volley.newRequestQueue(context); 
    requestQueue.add(stringRequest); 

這個例子發送POST,但你可以改變它,並使用Request.Method.GETSERVER_URL是您發送數據的地方。 dataMap您可以在其中放置參數。

相關問題