[英]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 。
以上評論可在以下網址中找到
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.