2017-03-20 66 views
1
@Headers("Authorization: " + BuildConfig.CLIENT_ID + " " + BuildConfig.CLIENT_SECRET) 
@GET("get/list") 
Observable<List<Post>> getList(); 

里面的GET文件夹u能找到这样的.htaccess:(安卓)d/OkHttp:400错误的请求

RewriteEngine On 
AuthName "Staff Only:3" 
AuthType Basic 
AuthUserFile .../api/get/.htpasswd 
require valid-user 

获取/列表返回岗位的JSON数组。在那个php代码中没有400个代码。我也确定在我的json响应中,它的正确性(由jsonschema2pojo.org确认) 标题(codeblock 1)确实授权我。

而且......

D/OkHttp: --> GET http://*********/api/get/list http/1.1 
D/OkHttp: Authorization: r*******m *******6 
D/OkHttp: --> END GET 
... 
D/OkHttp: <-- 400 Bad Request http://*********/api/get/list (18711ms) 
D/OkHttp: Date: Sun, 19 Mar 2017 20:13:11 GMT 
D/OkHttp: Content-Type: text/html 
D/OkHttp: Content-Length: 177 
D/OkHttp: Connection: close 
D/OkHttp: Server: -nginx 
D/OkHttp: CF-RAY: - 
D/OkHttp: <html> 
D/OkHttp: <head><title>400 Bad Request</title></head> 
D/OkHttp: <body bgcolor="white"> 
D/OkHttp: <center><h1>400 Bad Request</h1></center> 
D/OkHttp: <hr><center>cloudflare-nginx</center> 
D/OkHttp: </body> 
D/OkHttp: </html> 
D/OkHttp: <-- END HTTP (177-byte body) 

问心无愧?为什么?请告诉我最新的问题?你能帮我解决这个问题吗?

回答

1

你的PHP文件返回Content-Type: text/html而不是Content-Type: application/json;charset=UTF-8,这就是为什么你得到400.设置你的PHP文件的标题。

header("Content-Type: application/json;charset=utf-8"); 

PHP documentation

记住header()必须调用发送任何实际输出之前,无论是普通的HTML标签,在一个文件中的空行,或PHP。使用include或require函数或其他文件访问函数读取代码,并在调用header()之前输出空格或空行是非常常见的错误。使用单个PHP/HTML文件时存在同样的问题。

+0

我做了10小时前(我问了这个[2天前俄罗斯的stackoverflow](http://ru.stackoverflow.com/questions/641698/android-d-okhttp-400-bad-request) 。我的PHP以'<?php header(“Content-Type:application/json; charset = utf-8”)开始;' 仍然无法工作 –