java - 将表单数据发布到服务器(Android)
问题描述
我需要将我的注册表单详细信息提交到服务器 api。我尝试了一种方法,方法是在单击按钮时调用函数。但是服务器中没有发布任何内容。我需要将数据发布为 Content-type:Form-Data,因为服务器不响应其他任何内容。请帮帮我,谢谢!!
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();
RequestBody formBody = new FormBody.Builder()
.addEncoded("user",userName)
.addEncoded("pass",password)
.build();
Request request = new Request.Builder()
.url("http://www.autotrack.rs/android_juzna_backa/login.php")
.post(formBody)
.build();
try {
Call call = client.newCall(request);
Response response = call.execute();
System.out.println(response.body().string());
}catch (Exception m)
{
m.printStackTrace();
}
Response response = null;
try {
response = client.newCall(request).execute();
System.out.println(response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
if(!response.isSuccessful())
{
try {
throw new IOException("Unexpected: "+response);
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
解决方案
您忘记添加setType方法并使用addFormDataPart。
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("somParam", "someValue")
.build()
Request request = new Request.Builder()
.url("http://www.autotrack.rs/android_juzna_backa/login.php")
.post(formBody)
.build();
推荐阅读
- heroku - 部署流星待办事项应用程序时的异常和循环依赖
- spring - 使用弹簧进行休息通话时,日期被转换为长
- python - 如何在 Pandas 的散点图中显示来自旋转数据框的标签?
- algorithm - 令牌桶的形式误差是多少,可以校准吗?
- javascript - 如何删除点后面的数字?
- javascript - 从 base64 字符串创建 PDF new File()
- kubernetes - Kubernetes 如何处理没有任何资源配额的 Pod?
- scala - 这个语法在 scala [H <: Service[H]] 中意味着什么
- java - java - 如何从akka get route中返回文件
- javascript - Jquery 菜单活动选择到 Vue JS