Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Uber请求错误_Android_Retrofit_Uber Api - Fatal编程技术网

Android Uber请求错误

Android Uber请求错误,android,retrofit,uber-api,Android,Retrofit,Uber Api,我正在使用优步在我的应用程序中预订出租车。我获得了价目表,并成功通过身份验证以获取访问令牌。在那之后,我正试图通过使用预订出租车 我包括在内 这是我调用请求API的代码: private void bookUBER(String selectedProductId,String token,double startLatitude,double startLongitude, double endLatitude,double endLongitude) {

我正在使用优步在我的应用程序中预订出租车。我获得了价目表,并成功通过身份验证以获取访问令牌。在那之后,我正试图通过使用预订出租车

我包括在内

这是我调用请求API的代码:

private void bookUBER(String selectedProductId,String token,double startLatitude,double startLongitude,
            double endLatitude,double endLongitude) {

        UberAPIClient.getSandBox().getRequest(token, selectedProductId,
                startLatitude, startLongitude, endLatitude, endLongitude,
                new UberCallback<UberModel>() {
                    @Override
                    public void success(UberModel uberModel, Response response) {
                        super.success(uberModel, response);
                        Log.e("uberModel", uberModel.toString());
                        Log.e("response", "" + response);
                    }

                    @Override
                    public void failure(RetrofitError error) {
                        Log.e("bookUBER error ", "" + error);
                        super.failure(error);
                    }
                });

    }
private void bookUBER(字符串selectedProductId、字符串标记、双惊奇度、双惊奇度、,
双端纬度,双端经度){
UberapicClient.getSandBox().getRequest(令牌,selectedProductId,
震级,震级,经纬度,经度,
新UberCallback(){
@凌驾
public void成功(优步模型优步模型响应){
超级成功(优步模式、响应);
Log.e(“uberModel”,uberModel.toString());
Log.e(“响应”,“响应+响应”);
}
@凌驾
公共无效失败(错误){
Log.e(“bookUBER错误”,“错误+错误”);
超级。失败(错误);
}
});
}
请求方法:

 @POST("/requests")
    void getRequest(@Header("Authorization") String authToken,
                    @Query("product_id") String productId,
                    @Query("start_latitude") double startLatitude,
                    @Query("start_longitude") double startLongitude,
                    @Query("end_latitude") double endLatitude,
                    @Query("end_longitude") double endLongitude,
                    Callback<UberModel> callback);
@POST("/requests")
void getRequest(@Header("Authorization") String authToken,
                @Body HashMap<String, String> obj,
                Callback<UberModel> callback);
@POST(“/requests”)
void getRequest(@Header(“Authorization”)字符串authToken,
@查询(“产品id”)字符串productId,
@查询(“起始纬度”)双纬度,
@查询(“起始经度”)双精度,
@查询(“结束纬度”)双结束纬度,
@查询(“结束经度”)双结束经度,
回调(回调);
这是我的日志:

06-15 15:26:15.379: D/Retrofit(3142): <--- HTTP 406 https://sandbox-api.uber.com/v1/requests?product_id=fbc0033d-5a1a-4f01-964c-0e4ea56b6e7e&start_latitude=13.0497&start_longitude=80.2126&end_latitude=13.0827&end_longitude=80.2707 (2276ms)
06-15 15:26:15.379: D/Retrofit(3142): : HTTP/1.1 406 Not Acceptable
06-15 15:26:15.389: D/Retrofit(3142): Connection: keep-alive
06-15 15:26:15.389: D/Retrofit(3142): Content-Length: 164
06-15 15:26:15.389: D/Retrofit(3142): Content-Type: application/json
06-15 15:26:15.389: D/Retrofit(3142): Date: Mon, 15 Jun 2015 09:56:14 GMT
06-15 15:26:15.389: D/Retrofit(3142): Server: nginx
06-15 15:26:15.389: D/Retrofit(3142): Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
06-15 15:26:15.389: D/Retrofit(3142): X-Android-Received-Millis: 1434362175394
06-15 15:26:15.389: D/Retrofit(3142): X-Android-Sent-Millis: 1434362174535
06-15 15:26:15.389: D/Retrofit(3142): X-Uber-App: uberex-sandbox
06-15 15:26:15.389: D/Retrofit(3142): X-XSS-Protection: 1; mode=block
06-15 15:26:15.389: D/Retrofit(3142): {"message":"Only request header `Content-Type: application\/json` is supported for this endpoint. Please check your request headers.","code":"invalid_content_type"}
06-15 15:26:15.389: D/Retrofit(3142): <--- END HTTP (164-byte body)
06-15 15:26:15.399: E/bookUBER error(3142): retrofit.RetrofitError: 406 Not Acceptable
06-15 15:26:15.399: W/System.err(3142): retrofit.RetrofitError: 406 Not Acceptable
06-15 15:26:15.409: W/System.err(3142):     at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:388)
06-15 15:26:15.409: W/System.err(3142):     at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220)
06-15 15:26:15.409: W/System.err(3142):     at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278)
06-15 15:26:15.409: W/System.err(3142):     at retrofit.CallbackRunnable.run(CallbackRunnable.java:42)
06-15 15:26:15.409: W/System.err(3142):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
06-15 15:26:15.409: W/System.err(3142):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
06-15 15:26:15.409: W/System.err(3142):     at retrofit.Platform$Android$2$1.run(Platform.java:142)
06-15 15:26:15.409: W/System.err(3142):     at java.lang.Thread.run(Thread.java:856)

06-15 15:26:15.379:D/改装(3142):我终于得到了答案。将来可能会有人从这个答案中受益。
我提到过

我已更改请求方法:

 @POST("/requests")
    void getRequest(@Header("Authorization") String authToken,
                    @Query("product_id") String productId,
                    @Query("start_latitude") double startLatitude,
                    @Query("start_longitude") double startLongitude,
                    @Query("end_latitude") double endLatitude,
                    @Query("end_longitude") double endLongitude,
                    Callback<UberModel> callback);
@POST("/requests")
void getRequest(@Header("Authorization") String authToken,
                @Body HashMap<String, String> obj,
                Callback<UberModel> callback);
@POST(“/requests”)
void getRequest(@Header(“Authorization”)字符串authToken,
@Body HashMap obj,
回调(回调);
调用API的方法:

private void bookUBER(String selectedProductId,String token,double startLatitude,double startLongitude,
            double endLatitude,double endLongitude) {

       HashMap<String, String> obj=new HashMap<String, String>();
            obj.put("product_id", selectedProductId);
            obj.put("start_latitude", String.valueOf(startLatitude));
            obj.put("start_longitude", String.valueOf(startLongitude));
            obj.put("end_latitude", String.valueOf(endLatitude));
            obj.put("end_longitude", String.valueOf(endLongitude));

            UberAPIClient.getSandBox().getRequest(token, obj,
                    new UberCallback<UberModel>() {
                        @Override
                        public void success(UberModel uberModel, Response response) {
                            super.success(uberModel, response);
                            Log.e("response", "" + response.toString());
                        }

                        @Override
                        public void failure(RetrofitError error) {
                            Log.e("uber price list error ", "" + error);
                            super.failure(error);
                        }
                    });

    }
private void bookUBER(字符串selectedProductId、字符串标记、双惊奇度、双惊奇度、,
双端纬度,双端经度){
HashMap obj=新的HashMap();
obj.put(“产品id”,selectedProductId);
obj.put(“起始纬度”,String.valueOf(startatitude));
obj.put(“起始经度”,String.valueOf(惊人长度));
obj.put(“结束纬度”,String.valueOf(结束纬度));
obj.put(“end_经度”,String.valueOf(end经度));
UberAPIClient.getSandBox().getRequest(令牌、obj、,
新UberCallback(){
@凌驾
public void成功(优步模型优步模型响应){
超级成功(优步模式、响应);
Log.e(“response”,“”+response.toString());
}
@凌驾
公共无效失败(错误){
Log.e(“优步价目表错误”,“错误+”);
超级。失败(错误);
}
});
}

您是否尝试过显式设置内容类型?是的,我尝试过添加这个@Headers({“content-type:application/json”}),它可能应该是内容类型,大写T。将尝试@NikolaDespotoski,我已经在Swift ios中这样做了。检查我的答案