Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.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
Java Android NameValuePair发送值_Java_Php_Android_Json - Fatal编程技术网

Java Android NameValuePair发送值

Java Android NameValuePair发送值,java,php,android,json,Java,Php,Android,Json,我有PHP代码,它连接到MySql并将数据编码为JSON。稍后我会过滤它并获得特定的JSON对象。当我使用一个NameValuePair对象时,它工作得很好,但现在我想使用用户名和密码之类的变量。现在,我在logcat错误解析data.org.json.JSONException中收到此警报:org.json.JSONObject$1类型的值null无法转换为JSONArray 我应该如何更改可以正常工作的代码 $q=mysql_query("SELECT username, firstname

我有PHP代码,它连接到MySql并将数据编码为JSON。稍后我会过滤它并获得特定的JSON对象。当我使用一个NameValuePair对象时,它工作得很好,但现在我想使用用户名和密码之类的变量。现在,我在logcat错误解析data.org.json.JSONException中收到此警报:org.json.JSONObject$1类型的值null无法转换为JSONArray

我应该如何更改可以正常工作的代码

$q=mysql_query("SELECT username, firstname, lastname, email, phone1, skype, city, description FROM mdl_user WHERE username LIKE '$username' AND password LIKE '$password'");
while($e=mysql_fetch_assoc($q))
    $output[]=$e;
print(json_encode($output));
发送请求的代码:

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("usern",""+usr));
        nameValuePairs.add(new BasicNameValuePair("passw",""+psw));
        InputStream is = null; 
        String result = "";
        //http post
        try{
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://ik.su.lt/~jbarzelis/Bdarbas/getUserInfo.php");
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();
        }catch(Exception e){
                Log.e("log_tag", "Error in http connection "+e.toString());
        }

如果这是您放在服务器端的全部代码,那么我想您需要首先使用下面的
$\u POST[]
方法将值输入
$username
$password

$username=$_POST["usern"];
$password=$_POST["passw"];
密码也一样


因为到目前为止,变量中没有值,所以您的
SELECT
语句返回
null
值,该值以
JSON
格式发送给客户端,这会导致
null
值错误。

根据您的评论“我在尝试使用用户名时使用过,效果很好。”

您以何种形式存储密码?纯文本(我希望不是)还是散列?如果是散列,在哪里执行散列?在php中,你不知道如果它是完整的代码,你会在java代码中这样做吗?如果不是,那就是你的答案


至于类似的,它当然起作用了。LIKE没有=严格,它会产生很大的开销。它应该只在非常简单的搜索语句(非常简单)中使用,当然不应该在授权中使用。

现在我的帖子没有意义,所以我将删除它:),但你仍然应该在授权中使用“=”而不是“喜欢”。并尝试硬编码您的用户名和密码,以检查它是否打印您的输出。如果是这样的话,问题就消失了,那么你就无法将数据发送到php脚本,而不是接收数据。是的,我完全同意这里的@MichałK。问题是返回的是null值,所以sql语句或向服务器发送数据可能有问题,或者只是您的
usr
psw
变量与数据库中的变量不匹配。我在尝试仅使用用户名时使用了LIKE,效果很好。
$username=$_POST["usern"];
$password=$_POST["passw"];