我正在Android Studio中制作一个使用OkHttp将GET请求调用发送到Yelp Fusion API的应用。
我使用正确的Auth Bearer令牌测试了Postman中的请求,并且该请求有效。
但是,当我在Android App上测试Request调用时却没有。
对于我的测试用例,我尝试使用http://httpbin.org来查看标题是否通过。是的。
Request request_test = new Request.Builder()
.url("http://httpbin.org")
.get()
.addHeader("Authorization", "Bearer TOKEN")
.addHeader("cache-control", "no-cache")
.build();
对于我的结果,我能够得到:
"headers": {
"Accept-Encoding": "gzip",
"Authorization": "Bearer TOKEN",
"Cache-Control": "no-cache",
"Host": "httpbin.org",
"User-Agent": "okhttp/3.12.0"
}
这是我的代码:
public class OkHttpHandler extends AsyncTask<String,Void,String> {
OkHttpClient client = new OkHttpClient();
@Override
protected String doInBackground(String... params){
Request request = new Request.Builder()
.url("http://api.yelp.com/v3/businesses/search?term=restaurants&latitude=37.72856&longitude=-122.47688&radius=8046")
.get()
.addHeader("cache-control", "no-cache")
.addHeader("Authorization","Bearer TOKEN")
.build();
Log.d(TAG, request.toString());
try{
Response response = client.newCall(request).execute();
return response.body().string();
}
catch (Exception e){
}
return null;
}
预期输出:
Yelp Response。
实际结果:
输出响应:{“错误”:{“代码”:“ VALIDATION_ERROR”,“描述”:>“授权是必需参数。”,“字段”:“授权”,“实例”:>空}}
编辑: 我意识到我的错误。 我使用的是HTTP方案,而不是https。