这是我用于网络调用的函数。
private void getSample() {
Log.d("", "getSample : ");
OkHttpClient client = new OkHttpClient();
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
client.interceptors().add(interceptor);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(NetworkCalls.BASE_URL)
.client(client)
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
NetworkCalls.CustomerApi customerApi = retrofit.create(NetworkCalls.CustomerApi.class);
Log.e("customerApi Created", "customerApi object Created : ");
customerApi.getCategories("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjgsImlzcyI6Imh0dHA6XC9cLzE5Mi4xNjguMS42MDo4ODg4XC9DQ1YzXC9wdWJsaWNcL2FwaVwvbG9naW4iLCJpYXQiOjE0NDk0ODg5NDMsImV4cCI6MTQ0OTQ5MjU0MywibmJmIjoxNDQ5NDg4OTQzLCJqdGkiOiI0ODY4ZmNmZDk4OTIxZGQwYjA2ZDZlN2EyYjRjZGMxMSJ9.7c60LRQMFCtqprCbbULgR5xG-FxwXnRUZPuWeMJXcNE")
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Response<DataCategoryList>>() {
@Override
public void onCompleted() {
Log.e("onCompleted", "onCompleted : ");
}
@Override
public void onError(Throwable e) {
Log.e("onError", "onError : " + e.getMessage());
e.printStackTrace();
// network errors, e. g. UnknownHostException, will end up here
}
@Override
public void onNext(Response<DataCategoryList> startupResponseResponse) {
}
});
}
接口类
public interface CustomerApi {
@Headers({
"Accept: application/json"
})
@FormUrlEncoded
@POST("categories")
Observable<Response<DataCategoryList>> getCategories(@Field("token") String token);
}
收到400个错误请求。
错误日志
<-- HTTP/1.1 400 Bad Request (207ms)
12-07 17:48:56.408 21024-21067/com.cc.customer D/OkHttp: Date: Mon, 07 Dec 2015 12:19:22 GMT
12-07 17:48:56.408 21024-21067/com.cc.customer D/OkHttp: Server: Apache/2.2.29 (Unix) mod_wsgi/3.5 Python/2.7.10 PHP/5.6.10 mod_ssl/2.2.29 OpenSSL/0.9.8zg DAV/2 mod_fastcgi/2.4.6 mod_perl/2.0.9 Perl/v5.22.0
12-07 17:48:56.408 21024-21067/com.cc.customer D/OkHttp: X-Powered-By: PHP/5.6.10
12-07 17:48:56.408 21024-21067/com.cc.customer D/OkHttp: Cache-Control: no-cache
12-07 17:48:56.408 21024-21067/com.cc.customer D/OkHttp: Set-Cookie: XSRF-TOKEN=5Uqd6WSjbalLcvX3o9RLDY1bGt69ktNoiLZZOahP; expires=Mon, 07-Dec-2015 14:19:22 GMT; Max-Age=7200; path=/
12-07 17:48:56.408 21024-21067/com.cc.customer D/OkHttp: Set-Cookie: laravel_session=882b5bdedd5dac0fcbfb88706406e3cc0acf91f6; expires=Mon, 07-Dec-2015 14:19:22 GMT; Max-Age=7200; path=/; httponly
12-07 17:48:56.408 21024-21067/com.cc.customer D/OkHttp: Content-Length: 30
12-07 17:48:56.408 21024-21067/com.cc.customer D/OkHttp: Connection: close
12-07 17:48:56.408 21024-21067/com.cc.customer D/OkHttp: Content-Type: application/json
12-07 17:48:56.408 21024-21067/com.cc.customer D/OkHttp: OkHttp-Selected-Protocol: http/1.1
12-07 17:48:56.408 21024-21067/com.cc.customer D/OkHttp: OkHttp-Sent-Millis: 1449490736233
12-07 17:48:56.408 21024-21067/com.cc.customer D/OkHttp: OkHttp-Received-Millis: 1449490736410
12-07 17:48:56.408 21024-21067/com.cc.customer D/OkHttp: <-- END HTTP (30-byte body)
任何帮助都将不胜感激。
在地图中发送数据后,我解决了我的问题。这是我的工作。
Map<String,String> hashMap=new HashMap<>();
hashMap.put("client_id","2");
hashMap.put("client_secret",Constant.CLIENT_SECRET);
hashMap.put("grant_type",Constant.GRANT_TYPE);
hashMap.put("username",et_user.getText.toString();
hashMap.put("password",etpassword.getText().toString());
Call<LoginDataModel> call=apiInterface.login(hashMap);
在ApiInterface中,我添加了这样一个方法
@FormUrlEncoded
@POST("oauth/token")
Call<LoginDataModel> login(@FieldMap Map<String, String> options);
400听起来像您从服务器获得的特定错误代码。您可以尝试通过在改造上添加loglevel进行调试。
OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
clientBuilder.addInterceptor(loggingInterceptor);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(NetworkCalls.BASE_URL)
.client(clientBuilder.build())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
向gradle添加依赖项
compile 'com.squareup.okhttp3:logging-interceptor:3.3.1'
使用loglevel,您可能会看到从服务器返回的一些错误json。
示例:
{"statusCode":400,"message":"Some parameters are missing"}
D/Retrofit: <--- END HTTP (76-byte body)
我有我的api在Django和Django REST框架(DRF)。 这是我的设置文件: 我得到了坏请求(400)错误: 我查看了Chrome的网络选项卡,我得到的是: 在React中,我得到: 问题是什么,错误背后的原因是什么?API正在工作,我以前没有这个错误。
我在想我做错了什么。我收到了400个错误的请求,试图通过角服务发送一个帖子请求。我有两个实体--Document和DocumentCategory(多对多关系)。我可以张贴文件本身(没有类别)没有问题。 正如我所说,如果我删除类别,一切都可以工作。我想不通:( 编辑:当我试图将上面的json作为application/json发送时,Postman显示了这一点作为响应:
我正在尝试配置一个基于extjs作为前端和Spring作为后端的小应用程序。因此,为了从extjs与服务器通信,我们需要在存储区配置代理编写器。我的代理配置如下所示: 这是Spring控制器中的@Request estMmap: Tomcat每次回答“400错误请求”时都会使用描述“客户端发送的请求语法不正确”。 所以,但是如果我将代理类型更改为ajax并请求映射以获取POST请求,一切都可以正常
当我添加ACDailyLine时,两个post方法的请求都变为4oo错误 为什么当我只放ACDailyH post方法时,一切正常,返回201请求。当我为AcDailyLine添加时,两者都返回400个错误请求。请帮忙,提前谢谢:) 在这里,当我调试该行时
因此,当我对服务器进行POST API调用时,我得到一个带有JSON响应的400 Bad Request错误。 我管它叫 然而,问题是,一旦我得到响应,就调用onFailure(),这样就调用了//bb。在这里,我无法访问JSON响应。当我记录api请求和响应时,它根本不显示JSON响应。而可抛出的t是IOException。然而,奇怪的是,当我对Postman进行相同的调用时,它确实返回了预期的
我试图通过LinkedIn API上的共享发布一个LinkedIn共享更新,使用PHP库LinkedIn-Client API。我已经成功地授权了该用户,并从该用户那里返回了访问令牌。我将该令牌与这个共享API调用一起使用。下面是我的代码: LinkedIn-Client API在内部使用Guzzle处理HTTP请求。我试图直接使用,而不使用,但是错误相同,没有成功。 致命错误:未捕获的异常“GU