Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Java Http Post到PHP服务器始终为空?_Java_Php_Android_Http_Post - Fatal编程技术网

Android Java Http Post到PHP服务器始终为空?

Android Java Http Post到PHP服务器始终为空?,java,php,android,http,post,Java,Php,Android,Http,Post,我研究了所有的互联网,找到了关于如何从android到php服务器使用HTTPPOST的文章。我不是在寻找如何将数据从android传递到网站的例子。我正在寻找为什么POST变量在PHP中总是空的原因。是否需要在PHP上检查一些设置(我已经检查了输出缓冲、max post等),或者为HTTP post导入一个类以使post变量正常工作 下面的代码基本上是将值插入mysql数据库。因为POST变量是空的,所以它插入了空行。这验证了它正在连接到我的服务器/数据库,但没有传递POST值。有什么想法吗?

我研究了所有的互联网,找到了关于如何从android到php服务器使用HTTPPOST的文章。我不是在寻找如何将数据从android传递到网站的例子。我正在寻找为什么POST变量在PHP中总是空的原因。是否需要在PHP上检查一些设置(我已经检查了输出缓冲、max post等),或者为HTTP post导入一个类以使post变量正常工作

下面的代码基本上是将值插入mysql数据库。因为POST变量是空的,所以它插入了空行。这验证了它正在连接到我的服务器/数据库,但没有传递POST值。有什么想法吗?=)

代码如下:

    //Java Code-------------------------------------------------
    public static void executeHttpGet(Context context, String urlName){
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    String postURL = G.GetUrl(urlName);
    HttpPost httpPost = new HttpPost(postURL);
        httpPost.setHeader("Accept", "text/html,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5");
        httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");

    // Add your data
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

    try {
        nameValuePairs.add(new BasicNameValuePair("value1", "My Name"));
        nameValuePairs.add(new BasicNameValuePair("value2", "My Address"));
        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8));
        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httpPost);

    } catch (ClientProtocolException e) {

    } catch (IOException e) {

    }
} 

    //PHP code ----------------------------------------------------
    connectMySQL();

    mysql_query("
       INSERT INTO myhome(myname,myaddress,createdate)
       VALUES('{$_POST['value1']}','{$_POST['value2']}',NOW())
    ;")
    or die(mysql_error());
//Java代码-------------------------------------------------
公共静态void executeHttpGet(上下文,字符串urlName){
//创建一个新的HttpClient和Post头
HttpClient HttpClient=新的DefaultHttpClient();
字符串postrl=G.GetUrl(urlName);
HttpPost HttpPost=新的HttpPost(姿态);
setHeader(“Accept”,“text/html,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5”);
setHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
//添加您的数据
List nameValuePairs=新的ArrayList();
试一试{
添加(新的BasicNameValuePair(“value1”、“我的名字”);
添加(新的BasicNameValuePair(“value2”,“我的地址”);
setEntity(新的UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8));
//执行HTTP Post请求
HttpResponse response=httpclient.execute(httpPost);
}捕获(客户端协议例外e){
}捕获(IOE异常){
}
} 
//PHP代码----------------------------------------------------
connectMySQL();
mysql_查询(“
插入myhome(myname、myaddress、createdate)
值('{$\u POST['value1']}','{$\u POST['value2']}',NOW())
;")
或者死(mysql_error());

在SQL中使用$\u POST['value1']和$\u POST['value2']之前,是否可以尝试打印它们,并查看它们打印的内容

为了简单起见,我建议您重写PHP代码:

connectMySQL();
$value1 = trim($_POST['value1']);
$value2 = trim($_POST['value2']);
if ($value1 != "" && $value2 != "") {
    mysql_query("
       INSERT INTO myhome(myname,myaddress,createdate)
       VALUES('".$value1."','".$value2."',NOW())
    ;")
}

此外,一旦您验证了它是否有效,我强烈建议您阅读有关SQL注入攻击的内容,并尝试使用绑定变量或参数化查询,而不是直接在SQL语句中使用请求参数值。

感谢您的快速响应。我检查了v.log,它在android上显示value1和value2为空。我整个周末都在看代码,看不出有什么问题。在android上,v.log显示value1和value2的空白是什么意思?在PHP端检索value1和value2,在android端使用硬编码值,对吗?有人知道您是否需要SSL设置,以便通过HTTP POST将数据从android设备传递到服务器吗?不,您不需要SSL设置,它应该可以在HTTP上正常工作。此外,请尝试删除这些:“httpPost.setHeader(“Accept”,”text/html,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,/;q=0.5”);httpPost.setHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);”看看这是否有帮助。。