php - 为什么相同的 http 请求在浏览器中有效,但从我的 Android 应用程序发送时却失败了?

标签 php android httprequest directus

我正在尝试从 Directus Api 获取 jSON 数据,并且从浏览器发出请求时工作正常。但是,当我从我的 android 应用程序发送完全相同的请求时(相同的 URL,带有“授权” header 或参数)- 请求失败并显示 java.io.FileNotFoundException 和响应代码 405。

带有参数的 URL:WORKS IN BROWSER

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

带有参数的相同请求: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,使用 header “Authorization: Bearer my_test_token”发送:WORKS IN BROWSER

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

带有“授权:Bearer my_test_token” header 的相同请求:在 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'。

关于php - 为什么相同的 http 请求在浏览器中有效,但从我的 Android 应用程序发送时却失败了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54680809/

相关文章:

php - 如何使用php显示上传的csv文件数据

php - Jquery,将innerHTML添加到DIV并通过该innerHTML的ID访问元素?

angular - HttpRequest 和 reportProgress 不起作用或弄乱了我的请求

java - Android 构建时代号一个 Dex 问题?

java - 扩展应用程序的多个类

javascript - 如何在 Node.js 中正确取消 http 请求?

python - 如何使用 python 请求和处理 JSON?

php - 将嵌套数组简化为单级数组

php - 构建和搜索 GPS 坐标的 SQL 数据库/表

android - MPAndroidChart 如何在同一图表线中表示具有不同点数的多个数据集对象