0

运行此代码时出现空点异常。

我试图做的是...从应用程序获取用户邮件到字符串 uemail 并尝试获取与 uemail 成为朋友的朋友。

活动

public class MainActivity extends Activity {
    protected static final String TAG_Name = null;
    int a;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        a = 2;
        Button ref = (Button)findViewById(R.id.button1);

        ref.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub

                InputStream is = null;
                String result = "";

                ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

                String uemail = String.valueOf(a);
                nameValuePairs.add(new BasicNameValuePair("place_id", uemail));
                try {
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpPost httppost = new HttpPost(
                            "http://www.hopscriber.com/test.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());
                }
                // convert response to stringtry
                try {
                    BufferedReader reader = new BufferedReader(new InputStreamReader(
                            is, "iso-8859-1"), 8);
                    StringBuilder sb = new StringBuilder();
                    String line = null;
                    while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                    }
                    is.close();

                    result = sb.toString();
                } catch (Exception e) {
                    Log.e("log_tag", "Error converting result " + e.toString());
                }
                try {
                    ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();

                    JSONArray jsonArray = new JSONArray(result);

                    if (jsonArray != null) {
                        for (int i = 0; i < jsonArray.length(); i++) {
                            JSONObject object = (JSONObject) jsonArray.get(i);

                            HashMap<String, String> map = new HashMap<String, String>();

                            map.put(TAG_Name, object.getString("place_id"));

                            contactList.add(map);

                        }
                    }
                    TextView z = (TextView)findViewById(R.id.textView1);

                    z.setText(TAG_Name);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

php

<?php
include "db_config.php";

$q=mysql_query("SELECT 'name' FROM places WHERE place_id='".$_REQUEST['place_id']."'");

while($e=mysql_fetch_assoc($q))
        $output[]=$e;

print(json_encode($output));

mysql_close();
?>

我似乎找不到答案....请帮帮我..它老虎空

4

4 回答 4

1

在 hopscriber.com.Menu.tryme(Menu.java:224)

检查tryme文件Menu.java第 224 行中的方法。那里发生空指针异常

于 2012-07-20T04:37:55.320 回答
1

我注意到该mysql_query行存在问题,并且在子句中" WHERE uname='".$_REQUEST['uemail']."'");未正确转义以下内容。WHERE

正确的 PHP 如下。

 <?php
 $sql=mysql_query("SELECT`uname`,`place`,`time` FROM `check_in` 
 WHERE uname='".$_REQUEST['uemail']."'");
 while($row=mysql_fetch_assoc($sql)) $output[]=$row;
 print(json_encode($output));
 mysql_close();
 ?>

只要您从不调用,您的 java 看起来就很好tryme()(比如在没有事先定义的 main 方法userName中)。

于 2012-07-20T04:55:10.027 回答
1

警告

uname='".$_REQUEST['uemail']."'" 

是一个海量的 SQL 注入攻击漏洞。请使用正确的变量转义。

现在,我们在哪里?

在 PHP 方面,您有一个 " 之后check_in出现语法错误。您将没有 JSON 数组。

没有更多代码或日志,无法确定 NULL 指针异常在哪里。

于 2012-07-20T04:36:06.597 回答
0

这条线有问题...

  private void tryme() {
    // TODO Auto-generated method stub

    InputStream is = null;
    String result = "";
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

    String uemail = String.valueOf(usernameName);  
    // here the uemail is getting null

uemailis的值,NUll因此发生空指针异常。

于 2012-07-20T04:32:30.490 回答