[英]How do I submit variables from Android Activity to website url?
我建立了一个应用程序,该应用程序的工作方式类似于表单,它包含四个字段并验证信息以确保没有输入无效字符。 这四个字段存储在变量中:
评论
现在,我想将表单数据(无论输入到这四个字段中并存储到变量中)提交到url(将使用http://www.test.com ),但是我不确定如何执行此操作。 我想我正在寻找一种叫做HttpURLConnection的东西,但是我不确定如何指定发送哪个变量。 我从网站http://developer.android.com/reference/java/net/HttpURLConnection.html找到以下代码
private class UploadFilesTask extends AsyncTask<URL, Integer, Long>{ protected Long doInBackground(URL... urls) { try { HttpClient http = new DefaultHttpClient(); HttpPost post = new HttpPost("http://www.test.com"); List<NameValuePair> data = new ArrayList<NameValuePair>(); data.add(new BasicNameValuePair("phone", "value")); data.add(new BasicNameValuePair("name", "value")); data.add(new BasicNameValuePair("email", "value")); data.add(new BasicNameValuePair("comments", "value")); post.setEntity(new UrlEncodedFormEntity(data)); HttpResponse response = http.execute(post); // do something with the response } catch (ClientProtocolException e) { // do something finish(); } catch (IOException e) { // do something finish(); }
}
}
任何帮助将不胜感激,谢谢!
将表单数据发送到服务器的最简单方法是使用HttpClient和HttpPost。
尝试这样的事情:
try {
HttpClient http = new DefaultHttpClient();
HttpPost post = new HttpPost("http://www.example.com/process");
List<NameValuePair> data = new ArrayList<NameValuePair>();
data.add(new BasicNameValuePair("phone", "value");
data.add(new BasicNameValuePair("name", "value");
data.add(new BasicNameValuePair("email", "value");
data.add(new BasicNameValuePair("comments", "value");
post.setEntity(new UrlEncodedFormEntity(data));
HttpResponse response = http.execute(post);
// do something with the response
}
catch (ClientProtocolException e) {
// do something
}
catch (IOException e) {
// do something
}
请注意,您需要在AsyncTask中执行此操作,因此您不必锁定UI线程即可等待网络操作完成。
编辑
这是一个简单的快速示例,它看起来像在AsyncTask中。
public class SendTask extends AsyncTask<Void, Void, Boolean> {
String responseString;
@Override
protected Boolean doInBackground(Void... params) {
try {
HttpClient http = new DefaultHttpClient();
HttpPost post = new HttpPost("http://www.test.com");
List<NameValuePair> data = new ArrayList<NameValuePair>();
data.add(new BasicNameValuePair("phone", "value"));
data.add(new BasicNameValuePair("name", "value"));
data.add(new BasicNameValuePair("email", "value"));
data.add(new BasicNameValuePair("comments", "value"));
post.setEntity(new UrlEncodedFormEntity(data));
HttpResponse response = http.execute(post);
responseString = new BasicResponseHandler().
handleResponse(response); // Basic handler
return true;
}
catch (ClientProtocolException e) {
// do something useful to recover from the exception
// Note: there may not be anything useful to do here
}
catch (IOException e) {
// do something useful to recover from the exception
// Note: there may not be anything useful to do here
}
return false;
}
@Override
protected void onPostExecute(Boolean success) {
// TODO: Do something more useful here
if (success) {
Toast.makeText(MainActivity.this, "Success: " + responseString, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(MainActivity.this, "Failed", Toast.LENGTH_LONG).show();
}
}
}
将字段添加到url作为参数。
String phone="phone=234432";
String name="name=John Smith";
String email="email=test@email.com";
Url = new URL("http://www.test.com?"+phone+"&"+name+"&"+email);
未经测试,但它应在GET Http请求中工作。
//使用xml请求
String url="http://www.test.com";
String xmlRequest="<message xmlns=\"http://test.com/schemas/ma\"><header></header>"+
"<body><phone>9944556622</phone><name>Mytest name</name><email>mytest@email.com</email>"+"<comments>hay this seems nice</comments></body></message>"
HttpPost httppost = new HttpPost(url);
StringEntity se = new StringEntity(xmlRequest,HTTP.UTF_8);
httppost.setHeader("Content-Type","application/xml");
httppost.setHeader("Accept","application/xml");
httppost.setEntity(se);
BasicHttpResponse httpResponse = (BasicHttpResponse) httpclient.execute(httppost);
StatusLine statusLine = httpResponse.getStatusLine();
HttpClient httpClient = new DefaultHttpClient();
Log.i("sampath","line 139");
HttpPost httpPost = new HttpPost(url);
BasicNameValuePair usernameBasicNameValuePair = new BasicNameValuePair("textMessage", msg);
List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
nameValuePairList.add(usernameBasicNameValuePair);
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("Firstption caz of HttpResponese :" + cpe);
cpe.printStackTrace();
} catch (IOException ioe) {
System.out.println("Secondption caz of HttpResponse :" + ioe);
ioe.printStackTrace();
}
} catch (UnsupportedEncodingException uee) {
System.out.println("Anption given because of UrlEncodedFormEntity argument :" + uee);
uee.printStackTrace();
}
//---------------------------------------------------------------------------
Here is the php file
<?php
$message = $_POST['textMessage'];
echo 'working fine'.$message;
$filename="androidmessages.html";
file_put_contents($filename,"Entered Text is:".$message."<br />",FILE_APPEND);
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.