我在我的 android 程序中将一些不同的数据收集到三个不同的变量中,这些变量具有不同的数据类型。
现在我需要将这些数据发布到服务器上,在那里我应该能够解析这些数据并将它们存储在我的本地数据库中。我将 php 用于我的服务器端脚本。
有人可以给我一个例子如何使用httppost做到这一点吗?
我在我的 android 程序中将一些不同的数据收集到三个不同的变量中,这些变量具有不同的数据类型。
现在我需要将这些数据发布到服务器上,在那里我应该能够解析这些数据并将它们存储在我的本地数据库中。我将 php 用于我的服务器端脚本。
有人可以给我一个例子如何使用httppost做到这一点吗?
向服务器发送请求并获取响应 json 是最好的实现方式。
这是将 httppost json 请求发送到服务器并处理 json 响应的一个很好的示例。
http://www.codeproject.com/Articles/267023/Send-and-receive-json-between-android-and-php
在 Android 端,您不应该在主 UI 线程中进行网络操作。
安卓端:
public class SendPOSTRequest extends AsyncTask<List<BasicNameValuePair>, Void, String>
{
private DefaultHttpClient _httpClient;
private String _url = "";
public SendPOSTRequest(String url){
_url = url;
_httpClient = new DefaultHttpClient();
}
@Override
protected String doInBackground(List<BasicNameValuePair>... postParameters) {
String responseString = "";
try
{
HttpPost postRequest = new HttpPost(_url);
postRequest.setEntity(new UrlEncodedFormEntity(postParameters[0]));
HttpResponse response = _httpClient.execute(postRequest);
StatusLine statusLine = response.getStatusLine();
// check if post was successfull
if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
HttpEntity entity = response.getEntity();
entity.writeTo(out);
out.close();
responseString = out.toString();
if (entity != null) {
entity.consumeContent();
}
}
}
catch(Exception ex)
{
ex.getMessage();
}
return responseString;
}
}
在您的活动中,您可以像这样使用“SendPostRequest”类: SendPOSTRequest webPOSTRequest = new SendPOSTRequest(yourWebURLWithYourPHPFunction); 列出 postParams = new ArrayList(); postParams.add(new BasicNameValuePair("Name", "viperbone")); 字符串结果 = webGetRequestUsersEntries.execute(postParams).get();
在服务器端,我将 php-script 与 PDO(PHP 数据对象)一起使用,因为它有助于防止 sql injection。
服务器端 PHP 脚本:
try
{
$DBH = new PDO("mysql:host=yourWebURL;dbname=yourDBName", username, password);
# substr(str,pos,len) - Make sure POST-Data aren't too long (255 chars max) because my database-field is 255 chars
$NameClear = substr($_POST['Name'], 0, 255);
# named placeholders
$STH = $DBH->prepare("INSERT INTO `yourTableName` (Name) VALUES ( :name )");
$STH->bindParam(':name', $NameClear);
# setting the fetch mode
$STH->setFetchMode(PDO::FETCH_ASSOC);
$STH->execute();
# I return 1 for a successful insertion
echo "1";
$DBH = null;
}
catch(PDOException $e) {
}
我希望它有帮助...