簡體   English   中英

為什么相同的http請求在瀏覽器中有效,但從Android應用發送時卻失敗?

[英]Why the same http request works in browser and fails when sent from my Android app?

我正在嘗試從Directus Api提取jSON數據,並且從瀏覽器發出請求時,請求工作正常。 但是,當我從我的android應用發送完全相同的請求(相同的URL,帶有“ Authorization”標頭或帶有參數)時,這些請求將失敗,並顯示java.io.FileNotFoundException和響應代碼405。

帶有參數的URL:瀏覽器中的WORKS IN BROWSER

http://example.com/dev/public/_/items/cities/1?access_token=my_test_token

帶有參數的相同請求:FAILS IN ADNROID

Uri.Builder builder = new Uri.Builder();
builder.appendQueryParameter("access_token","my_test_token");
//..
URL url = new URL(serverURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.addRequestProperty("Content-Type", "application/json; UTF-8");
conn.addRequestProperty("Accept","application/json; charset=utf-8");
conn.setRequestMethod("POST");
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.connect();

不帶參數的URL,以標頭'Authorization:Bearer my_test_token'發送:瀏覽器中的工作

http://example.com/dev/public/_/items/cities/1

具有“ Authorization:Bearer my_test_token”標頭的相同請求:ANDROID失敗

URL url = new URL(serverURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.addRequestProperty("Authorization", "Bearer " + token);
conn.addRequestProperty("Content-Type", "application/json; UTF-8");
conn.addRequestProperty("Accept","application/json; charset=utf-8");
conn.setRequestMethod("POST");
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.connect();

以上所有請求(帶有參數或帶有“授權”的請求)都無法在Android中使用。 瀏覽器和Android請求之間有什么區別嗎? 為什么相同的請求在Android上失敗,給出java.io.FileNotFoundException但在瀏覽器中有效? 有人可以幫忙嗎? 謝謝。

我發現我正在使用POST並嘗試在允許的方法為GET時發送輸出流,因此服務器返回405'methodNotAllowed'。

暫無
暫無

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

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