Android Studio中Yelp-Fusion-API的授权问题,令牌适用于邮递员,但不适用于获取请求

时间:2019-04-07 07:42:09

标签: android okhttp yelp yelp-fusion-api

我正在Android Studio中制作一个使用OkHttp将GET请求调用发送到Yelp Fusion API的应用。

我使用正确的Auth Bearer令牌测试了Postman中的请求,并且该请求有效。

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。

0 个答案:

没有答案