gpt4 book ai didi

php - Android:如何使用 http post 发送用户输入值?

转载 作者:行者123 更新时间:2023-11-30 03:21:30 25 4
gpt4 key购买 nike

我正在尝试通过我的 Android 应用程序发送此消息:

https://myserver/index.php?x0=param1&y0=param2&z0=param3

其中 param1、param2 和 param3 是用户在 EditText 字段中输入的值...

目前我的应用程序读取这些值,但是当我尝试使用 httppost 发送它们时,它不起作用(我没有收到错误消息,但这些值没有像预期的那样改变...)

有人可以解释我做错了什么吗?

这是我的 MainActivity 的一部分,我在其中读取参数值并调用 sendPostRequest 方法:

 private OnClickListener InitialPosListener = new OnClickListener() {
@Override
public void onClick(View v) {

String x00 = InitialPosX.getText().toString(); String y00 = InitialPosY.getText().toString(); String z00 = InitialPosZ.getText().toString();
float x0 = Float.valueOf(x00); float y0 = Float.valueOf(y00); float z0 = Float.valueOf(z00);


sendPostRequest(x00, y00, z00);


};

这里是 http post 方法,稍后在我的 MainActivity 中定义:

        private void sendPostRequest(String x00, String y00, String z00) {

class SendPostReqAsyncTask extends AsyncTask<String, Void, String>{

@Override
protected String doInBackground(String... params) {

String x00 = params[0];
String y00 = params[1];
String z00 = params[2];

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("https://myserver/index.php");
BasicNameValuePair XBasicNameValuePair = new BasicNameValuePair("x0", x00);
BasicNameValuePair YBasicNameValuePAir = new BasicNameValuePair("y0", y00);
BasicNameValuePair ZBasicNameValuePAir = new BasicNameValuePair("z0", z00);

List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
nameValuePairList.add(XBasicNameValuePair);
nameValuePairList.add(YBasicNameValuePAir);
nameValuePairList.add(ZBasicNameValuePAir);


try {
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(nameValuePairList);
httpPost.setEntity(urlEncodedFormEntity);

try {
HttpResponse httpResponse = httpClient.execute(httpPost);
InputStream inputStream = httpResponse.getEntity().getContent();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
StringBuilder stringBuilder = new StringBuilder();
String bufferedStrChunk = null;

while((bufferedStrChunk = bufferedReader.readLine()) != null){
stringBuilder.append(bufferedStrChunk);
}

return stringBuilder.toString();

} catch (ClientProtocolException cpe) {
System.out.println("First Exception caz of HttpResponese :" + cpe);
cpe.printStackTrace();
} catch (IOException ioe) {
System.out.println("Second Exception caz of HttpResponse :" + ioe);
ioe.printStackTrace();
}

} catch (UnsupportedEncodingException uee) {
System.out.println("An Exception given because of UrlEncodedFormEntity argument :" + uee);
uee.printStackTrace();
}

return null;
}


} //END CLASS SendPostReqAsyncTask

SendPostReqAsyncTask sendPostReqAsyncTask = new SendPostReqAsyncTask();
sendPostReqAsyncTask.execute(x00, y00, z00);

} //END VOID sendPostRequest

最佳答案

此表单 https://myserver/index.php?x0=param1&y0=param2&z0=param3 不是您通过 POST 获得的表单 -要求。您应该尝试使用 GET 以这种形式发送它,或者仔细查看项目的服务器端是否 POSTGET那里的区别。

(编辑为用户 2748484 的评论添加信息)

根据定义,您分配给变量的值不是静态的(因此称为“变量”)。如果您想在 GET 请求中发送键值对,最基本的方法是自己构建查询字符串(? 之后的部分),因为在 Java 中使用 StringBuilder 实例。

然后您可以将构造的查询字符串附加到 URI。

String url = "https://myserver/index.php";
String queryString = "x0=param1&y0=param2&z0=param3"; // construct this with StringBuilder
String result = url + "?" + queryString;

然后您可以使用结果字符串来执行您的GET-Request。注意:如果您构建查询字符串,请不要忘记对键和值进行 URL 编码(但不是 &)。

HTH.

关于php - Android:如何使用 http post 发送用户输入值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19049299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com