问题
I have an android application that i using to post data to a website using http post but it is not posting any data to the website.
In my android code:
postParameters.add(new BasicNameValuePair("latitude", Double.toString(latitude)));
postParameters.add(new BasicNameValuePair("longitude", Double.toString(longitude)));
response = CustomHttpClient.executeHttpPost("url", postParameters);
In executeHttpPost method
public static String executeHttpPost(String url, ArrayList postParameters)
throws Exception {
BufferedReader in = null;
try {
HttpClient client = getHttpClient();
HttpPost request = new HttpPost(url);
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(
postParameters);
request.setEntity(formEntity);
HttpResponse response = client.execute(request);
in = new BufferedReader(new InputStreamReader(response.getEntity()
.getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";
String NL = System.getProperty("line.separator");
while ((line = in.readLine()) != null) {
sb.append(line + NL);
}
in.close();
String result = sb.toString();
return result;
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Here is the php source
$lat=$_POST['latitude'];
$long=$_POST['longitude'];
mysql_connect('localhost','welcome','Welcome123') or die('conn error');
mysql_select_db('es') or die('select error');
$query = "insert into GEO_LOC (GEO_LOC_LAT,GEO_LOC_LONG) values ($lat,$long)";
$result = mysql_query($query);
if($result)
{
echo 1;
}
else echo "Database Error";
?>
But this post method does not do anything . Am i missing something? Do i have to add anything additional?
回答1:
try this,
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(ADD URL HERE);
try {
List<NameValuePair> name = new ArrayList<NameValuePair>();
name.add(new BasicNameValuePair("latitude", Double.toString(latitude)));
name.add(new BasicNameValuePair("longitude", Double.toString(longitude)));
post.setEntity(new UrlEncodedFormEntity(name));
HttpResponse response = client.execute(post);
BufferedReader rd = new BufferedReader(new InputStreamReader(
response.getEntity().getContent()));
String line = "";
StringBuilder sb = new StringBuilder();
while ((line = rd.readLine()) != null) {
sb.append(line + "\n");
}
} catch (Exception e) {
}
回答2:
check below code:
public static ArrayList<NameValuePair> arrayPost = new ArrayList<NameValuePair>();
add parameter in above array if array size is 0 then,
if (arrayPost.size() <= 0) {
arrayPost.add(new BasicNameValuePair("test", "test"));
}
public static String Call_Http_URL_PostMethod(String url)
throws ClientProtocolException, IOException {
String is = null;
try {
if (arrayPost.size() <= 0) {
arrayPost.add(new BasicNameValuePair("test", "test"));
}
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
httppost.setEntity(new UrlEncodedFormEntity(arrayPost, HTTP.UTF_8));
HttpResponse responce = httpclient.execute(httppost);
HttpEntity entity = responce.getEntity();
is = EntityUtils.toString(entity);
Log.e("post responce----->", "" + is);
} catch (Exception e) {
Log.d("post responce error ----->", "" + e.getMessage().toString());
is = null;
}
return is;
}
change your php code like below(this is just for testing)
if($result)
{
echo json_encode("result"=array("sucsess"););
}
echo json_encode("result"=array("Database Error"));
来源:https://stackoverflow.com/questions/15090275/post-data-from-android-to-php