簡體   English   中英

Android無法使用HttpURLConnection發送GET請求

[英]Android can't send GET request with HttpURLConnection

我正在嘗試在我的應用程序中使用HttpURLConnection。 我將我的請求方法設置為'GET',但是當我嘗試檢索輸出流時,該方法將更改為'POST'! 我不確定是什么原因,但是當我使用'POST'發送請求時,我的JSON服務器(我使用JAX-RS)會返回一個空白頁面。

這是我的代碼片段:

// Create the connection
HttpURLConnection con = (HttpURLConnection) new URL(getUrl() + uriP).openConnection();
// Add cookies if necessary
if (cookies != null) {
  for (String cookie : cookies) {
    con.addRequestProperty("Cookie", cookie);
    Log.d("JSONServer", "Added cookie: " + cookie);
  }
}
con.setDoOutput(true);
con.setDoInput(true);
con.setUseCaches(false);
con.setRequestMethod("GET");
con.setConnectTimeout(20000);
// Add 'Accept' property in header otherwise JAX-RS/CXF will answer a XML stream
con.addRequestProperty("Accept", "application/json");

// Get the output stream
OutputStream os = con.getOutputStream();

// !!!!! HERE THE REQUEST METHOD HAS BEEN CHANGED !!!!!!
OutputStreamWriter wr = new OutputStreamWriter(os);
wr.write(requestP);
// Send the request
wr.flush();

謝謝你的回答。 埃里克

但是GET請求應該沒有內容......通過寫入連接輸出流,您正在將請求的性質更改為POST。 該庫非常有助於發現您正在執行此操作... getOutputStream的文檔明確指出“調用此方法時,默認請求方法更改為”POST“。

如果您需要在GET中將數據發送到服務器,則需要以正常方式在URL參數中進行編碼。

刪除con.setDoOutput(true); 從你的代碼。 然后Web服務請求將與GET方法一起正常工作

HttpURLConnection默認使用GET方法。 如果setDoOutput(true) ,它將使用POST

以上評論可在以下網址中找到

Android HTTPURLConnection類

暫無
暫無

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

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