簡體   English   中英

HTTP:差異請求屬性和POST-參數

[英]HTTP: difference Request Property and POST - Parameters

我目前正在嘗試使用HttpURLConnection-class通過android應用程序將POST方法發送到簡單的PHP Web服務。 多個教程使用緩沖的writer類將參數寫入http-body,但是HttpURLConnection也具有setRequestProperty()方法,該方法將鍵值對添加到連接中。 顯然,它們不是用於同一目的,但是有什么區別(我也檢查過Google,但沒有找到答案)?

setRequestProperty()用於設置HTTP標頭(如Content-Type ):

conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

但是要設置POST參數,您需要對其進行url編碼並將結果字符串(轉換為字節流)寫入從HttpURLConnection實例獲得的OutputStream

例如,發送a帶有值1b值為2的POST參數,你可以做到以下幾點:

final String urlEncodedString = "a=1&b=2";
final byte[] bytesToWrite = urlEncodedString.getBytes(StandardCharsets.UTF_8);
conn.getOutputStream().write(bytesToWrite);

在這里, connHttpURLConnection的實例。

您使用的過舊方式向服務器發出請求。 嘗試使用一些庫,這些庫將減少許多不必要的代碼,例如加載到緩沖區讀取器和轉換過程,而不是我建議您使用凌空庫,請閱讀有關它的Google文檔。 您可以創建一個自定義JSONObjectReuqest並重寫getParams方法,也可以在構造函數中將它們作為JSONObject提供給請求主體。

像這樣(我編輯了您的代碼):

 JSONObject obj = new JSONObject(); obj.put("key", "value"); obj.put("key2", "value2"); // add whatever you want RequestQueue queue = MyVolley.getRequestQueue(); JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.POST,SPHERE_URL,obj, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { System.out.println(response); hideProgressDialog(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { hideProgressDialog(); } }); queue.add(jsObjRequest); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM