我正在使用Retrofit进行后端通信:如果状态代码不是200,那么回调调用失败方法.但我想在失败方法中获取状态代码以进一步调整代码
@Override
public void failure(RetrofitError retrofitError) {
Logger.e("ERROR Status:", retrofitError.getResponse().getStatus() + "");
}
}
Run Code Online (Sandbox Code Playgroud)
但上面的代码总是给出一个空指针异常.如何在失败时获取标题的状态代码.
请帮忙.
提前致谢.
我正在创建一个应用程序来控制商店,我正在尝试通过开放的 wifi 使用本地服务器 (192.168.0.56)。
有没有办法让我的应用程序使用 HTTPS 和自签名证书连接到我的服务器?
我正在使用改造,如果它的问题。
我在互联网上尝试了很多教程但没有成功,它总是返回此消息
Hostname '192.168.0.56' was not verified
Run Code Online (Sandbox Code Playgroud)
创建证书我使用了这个代码:
openssl genrsa -out san_server.key 2048
openssl req -new -key san_server.key -out san_server.csr -config openssl.cnf -subj "/C=BR/ST=Mato Grosso do Sul/L=Iguatemi/O=Talski/CN=192.168.0.56"
openssl req -text -noout -in san_server.csr
openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -nodes -key rootCA.key -days 3650 -out rootCA.pem -config openssl.cnf -subj "/C=BR/ST=Mato Grosso do Sul/L=Iguatemi/O=Talski/CN=192.168.0.56"
openssl x509 -req -in san_server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out san_server-rootCA.crt -days 3649
openssl x509 -in …Run Code Online (Sandbox Code Playgroud) 我正在使用 okhttp 向我的服务器发送请求。问题是 okhttp 发送的请求缺少内容长度标头 - 我可以手动设置标头:
Request.builder
....
.addHeader("content-length","some-value")
Run Code Online (Sandbox Code Playgroud)
但我无法获得适当的价值放在那里。如果我尝试像这样测量我的请求正文:
int request_length = body.length();
builder.addHeader("content-length", String.valueOf(request_length));
Run Code Online (Sandbox Code Playgroud)
然后 okhttp 根本不添加标题。
是否有将内容长度标头添加到请求的正确方法(最好是“默认”添加标头的方法)?
我有下面的方法来进行 GET 调用。我需要给它添加一个header,以便通过header将userToken传递给服务器。我怎么做?
public static String getJsonStringFromHttpGet(String url) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.build();
try {
Response responses = client.newCall(request).execute();
return responses.body().string();
} catch (IOException e) {
Timber.e(e, "response exception:");
return null;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用OkHttp 3.4.0-RC1.我正在尝试编写一个通过TLSv1.2连接Android 4.2.2/API 17设备的Web服务.我在OKHttp的这篇文章Android Enable TLSv1.2的底部看到了答案,但显然方法setSslSocketFactory不再存在.我也没有在OKHttp的Https文档中看到任何内容.谢谢!
如何使用 OkHttp 为我的 Android/Java 应用程序启用证书固定?
我正在寻找使用OKHTTP库进行并发网络请求的最佳实践。
基本上,这就是我想要做的:
我想编写一种方法,使N个并发网络请求发送到不同的URL,并且仅在所有N个请求都返回后才返回。
我考虑过手动编写Threads和Runnables之类的方法来创建一组请求池,但是我想知道是否存在某种更简单的方法来执行此操作。所以我的问题是:
我正在开发一个新的Android应用程序,我想适当地组织所有组件-网络调用类,JSON解析类等。我正在使用Okhttp进行网络通话;经过大量研究,我能够像这样构造我的代码:
我的NetworkUtil类:
public class NetworkUtil {
public static void getData(String url, final OkHttpListener listener){
OkHttpClient client = new OkHttpClient();
// GET request
Request request = new Request.Builder()
.url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
listener.onFailure(request, e);
}
@Override
public void onResponse(Response response) throws IOException {
listener.onResponse(response);
}
});
}
Run Code Online (Sandbox Code Playgroud)
我的网络回调接口:
public interface OkHttpListener {
void onFailure(Request request, IOException e);
void onResponse(Response response) throws IOException;
}
Run Code Online (Sandbox Code Playgroud)
这是我的Activity类:
OkHttpListener listener = new OkHttpListener() {
@Override
public …Run Code Online (Sandbox Code Playgroud) 我的应用程式发布版本中的places API出现问题,如果我能看到来自的日志,它将对我有很大帮助OkHttpClient。我要添加一个HttpLoggingInterceptor,但只能看到调试版本的日志。我如何在发行版本中看到它们?
如何在此代码中设置超时?
okhttp3.OkHttpClient client = new okhttp3.OkHttpClient();
okhttp3.Request request = new okhttp3.Request.Builder()
.url(url)
.get()
.build();
Call call = client.newCall(request);
call.enqueue(callback);
Run Code Online (Sandbox Code Playgroud)
谢谢。
okhttp ×10
android ×9
java ×2
okhttp3 ×2
retrofit ×2
android-mvp ×1
certificate ×1
concurrency ×1
http ×1
http-headers ×1
json ×1
ssl ×1