将数据从android发布到php

时间:2013-02-26 13:25:48

标签: php android http-post

我有一个Android应用程序,我使用http帖子将数据发布到网站,但它没有向网站发布任何数据。

在我的Android代码中:

                   postParameters.add(new BasicNameValuePair("latitude", Double.toString(latitude)));  
                   postParameters.add(new BasicNameValuePair("longitude", Double.toString(longitude))); 
                   response = CustomHttpClient.executeHttpPost("url", postParameters);  

在executeHttpPost方法

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();
            }
        }
    }
}

这是php源代码

$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";
?>

但是这个帖子方法没有做任何事情。我错过了什么吗?我还需要添加其他内容吗?

2 个答案:

答案 0 :(得分:0)

试试这个,

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) {

    }

答案 1 :(得分:0)

检查以下代码:

public static ArrayList<NameValuePair> arrayPost = new ArrayList<NameValuePair>();

如果数组大小为0则在上面的数组中添加参数,

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;
    }

更改您的PHP代码,如下所示(这仅用于测试)

if($result)
{
echo json_encode("result"=array("sucsess"););
}

echo json_encode("result"=array("Database Error"));