java - 在 Android 中使用 POST 请求发送数据时出错
问题描述
将用户名和密码发送到服务器时,我总是遇到同样的错误。我需要将数据作为内容类型发送:表单数据,因为服务器没有响应任何其他类型。我在邮递员中测试过,没关系,但是当我尝试用代码发送它时,它不起作用。谁能帮帮我,谢谢!!
public class Login extends AsyncTask<String, Void, Void> {
String userName;
String password;
public Login(String user, String pass) {
userName = user;
password = pass;
}
protected void onPreExecute() {
super.onPreExecute();
}
protected Void doInBackground(String... params) {
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("user",userName)
.addFormDataPart("pass",password)
.build();
Request request = new Request.Builder()
.url("http://www.autotrack.rs/android_juzna_backa/login.php")
.method("POST", body)
.build();
try {
Response response = client.newCall(request).execute();
System.out.println(response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
try {
Call call = client.newCall(request);
Response response = call.execute();
System.out.println(response.body().string());
}catch (Exception m)
{
Log.d("Mytag", m.getMessage());
}
if(!response.isSuccessful())
{
try {
throw new IOException("Unexpected: "+response);
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“boolean okhttp3.Response.isSuccessful()”
解决方案
这段代码对我来说非常好:
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("user","pera")
.addFormDataPart("pass","1111")
.build();
Request request = new Request.Builder()
.url("http://www.autotrack.rs/android_juzna_backa/login.php")
.method("POST", body)
.build();
Response response = client.newCall(request).execute();
在您的代码中,我看到您执行了两次相同的请求,也许这就是问题所在?
推荐阅读
- java - 基于自定义 Nifi 处理器的 Maven 构建在测试中失败,java.lang.UnsupportedOperationException
- r - 当子集的长度变为零时,如何简洁地处理子集?
- javascript - 为什么我会收到作为 React Child 功能的警告
- elasticsearch - ElasticSearch 中的映射和模板是什么?
- javascript - 在 AWS CDK 中使用 AWS 开发工具包的正确方法
- python - Pandas:如何在具有多个非重叠时间序列的长数据框中填充缺失的日期?
- javascript - 在设置器中设置新值时获取旧值(javascript)
- r - 如何使用 tidyverse 处理 R 中的多个数据库连接和选择语句
- kotlin - Spring Data R2DBC 持久化嵌套属性
- mysql - 找不到迁移方法:向上