namedValuePairs没有被传递,而是为空

时间:2012-07-02 15:24:15

标签: php android post get

我正在尝试使用PHP为Android项目编写基本帐户。我在脚本中发布了电子邮件,密码和昵称,并在数据库中查询重复项,如果没有找到则插入信息。如果我只是运行PHP脚本它工作正常,但不是当我尝试从Android发布的东西。这是代码:

public String createUser(String email, String pass, String nick) {

    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("email", email));
    nameValuePairs.add(new BasicNameValuePair("password", pass));
    nameValuePairs.add(new BasicNameValuePair("nick", nick));

    InputStream is = null;
    String reply = null;
    try {
        HttpClient httpclient = new DefaultHttpClient();

        // must store something locally to define this url
        // if the url ever changes, gotta make sure droids know without
        // requiring an update
        HttpPost httppost = new HttpPost(STR_PHP_USER);
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();

        BufferedReader reader = new BufferedReader(new InputStreamReader(
                is, "iso-8859-1"), 8);


        reply = reader.readLine();
        Log.e("createUser", "php response is "+reply);
        is.close();

    } catch (Exception e) {
        Log.e("log_tag", "Error in http connection " + e.toString() + " getCreateUserResult_HTTPPost");
    }

    return reply;

}

脚本应该返回0表示双重失败,1表示电子邮件失败,2表示缺刻失败,3表示成功。从android项目我总是得到0,因为数据库中已经有一个空名和缺口的用户。

另外,print_r($_GET, true));会导致:

Array
(
)

当我运行android项目时,我得到了

Array
(
    [email] => Random@someplace.org
    [password] => somepassword
    [nick] => RandoTheMagnificent
)

如果我是通过浏览器进行的。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在您的Android应用中,您使用POST发送参数,而不是GET。

您应该使用GET而不是修改脚本来使用POST。

P.S。您也可以通过添加print_r($_POST)来检查它。