【发布时间】:2019-04-12 18:19:51
【问题描述】:
我正在尝试在我的应用程序的登录页面中发布 JSON 对象。我搜索了许多示例并尝试了它们。但只有我的 android 4.3 设备运行良好,其他上层 api 级别的设备甚至没有响应回来。我的代码如下:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.LoginBtn:
loading.show();
try {
login();
} catch (JSONException e) {
e.printStackTrace();
}
break;
}
}
public void login(){
okhttp3.OkHttpClient client = new okhttp3.OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10,TimeUnit.SECONDS)
.readTimeout(10,TimeUnit.SECONDS)
.build();
final JSONObject JObje = new JSONObject();
try {
JObje.put("Username", String.valueOf(Username.getText()));
JObje.put("Password", String.valueOf(Password.getText()));
} catch (JSONException e) {
e.printStackTrace();
}
okhttp3.Request request = null;
okhttp3.RequestBody body = null;
body = new FormBody.Builder()
.addEncoded("JSONVALUE", String.valueOf(JObje))
.build();
request = new okhttp3.Request.Builder()
.url(context.getString(R.string.rutKontrolServis))
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.post(body)
.build();
client.newCall(request).enqueue(new okhttp3.Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, okhttp3.Response response) throws IOException {
Log.d("TAG","responded");
}
});
}
R.string.rutKontrolServis 网址是这样的:https://ourwebsite.com/folder/package_name.mywebservice
在我的 gradle 文件中,我添加了依赖项: 编译'com.squareup.okhttp3:okhttp:3.11.0'
对于较新的 api 级别设备的 tls 或 ssl 证书是否有任何不同的请求语法或任何限制?有人能指出一点吗
【问题讨论】:
-
尝试在
onFailure()中打印IOException。它说什么?
标签: android json network-programming okhttp3