can';无法在android中获取json数组

can';无法在android中获取json数组,android,json,arrays,Android,Json,Arrays,我试图从php脚本中获取json数据到我的android应用程序中,但是getJSONFromUrl(URL)不起作用。下面是我的代码 主要活动类 public class MainActivity extends Activity { private static final String URL = "http://10.0.2.2:1234/main.php/"; private JSONArray words = null; private ArrayList<String>

我试图从php脚本中获取json数据到我的android应用程序中,但是
getJSONFromUrl(URL)不起作用。下面是我的代码

主要活动类

public class MainActivity extends Activity {
private static final String URL = "http://10.0.2.2:1234/main.php/";
private JSONArray words = null;
private ArrayList<String> wordsList;
private static final String TAG_WORDS = "words";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    wordsList = new ArrayList<String>();
    updateJSONdata();
    Toast.makeText(getApplicationContext(), wordsList.toString(),
            Toast.LENGTH_LONG).show();
}

public void updateJSONdata() {      
    JSONParser jParser = new JSONParser();
    JSONObject json = jParser.getJSONFromUrl(URL);// this is where the error is
    try {
        words = json.getJSONArray(TAG_WORDS);
        for (int i = 0; i < words.length(); i++) {
            JSONObject c = words.getJSONObject(i);
            String title = c.toString();
            wordsList.add(title);
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
}
}
来自main.php的JSON数据

{"words":[["bra"],["fie"]],"success":1}  
PHP代码:

<?php
$username = "root"; 
$password = ""; 
$host = "localhost"; 
$dbname = "dictionary_db"; 
$con=mysql_connect($host, $username, $password);
if(!$con) die('could not connect'. mysql_error());
mysql_select_db($dbname,$con);
$query = "SELECT word from local_words" ;
$result=mysql_query($query) or die(mysql_error());
$count = 0;
$wordsArr = array();
$response["words"] = array();
while ($row = mysql_fetch_row($result)){
    array_push($wordsArr,$row);
    $count++;
}
$response["success"] = 1;   
$response["words"] = $wordsArr;
echo json_encode($response);
?>
{“success”:1,“words”:[word1,word2]}
不是有效的JSON。有效的JSON应该如下所示

{“success”:1,“words”:[“word1”,“word2”]}

如果正确发送JSON,请检查服务器响应。如果您添加更多信息,您的服务器返回JSON的内容和方式会有所帮助

更新

你有两个错误-

  • 缓冲区错误-lock==null
    。原因-您正在将
    null
    值传递给
    InputStreamReader
    ,即
    httpEntity.getContent()为空

  • JSON错误
    -解析器正在尝试解析空字符串,即在字符0处

  • httppost
    方法不受支持,或者服务器出现其他错误。您需要检查
    httpResponse
    的状态,并将其记录下来。那将解决问题

    另一次更新

    您遇到套接字异常-权限被拒绝,这里的问题是您没有将Internet权限添加到应用程序。转到您的清单,并添加以下权限

    <uses-permission android:name="android.permission.INTERNET"/>
    
    
    

    试试看,如果有帮助,请告诉我。

    请在您的问题帖子上更新它,并在地址栏中直接调用url时打印它在浏览器上的显示方式。请注意,我在记录
    httpResponse
    状态时遇到问题。你能帮帮我吗?我对android有点新手。尝试使用
    httpRespons.getStatusLine()
    记录状态,并更新输出:
    Log.d(“httpresponse”,“状态代码为”+httpresponse.getStatusLine().getStatusCode())是:
    java.net.SocketException:Permission denied
    看起来您的清单中缺少internet权限。用它更新了我的答案,请查看“”。“[word1,word2]”是枚举项。您应该使用getNames方法。使用解决方案路径更新了我的答案,请查看
    Buffer Error : Error converting result.lang.NullPointerException: lock == null
    JSON Parser : Error parsing data org.json.JSONException: End of input at character 0 of
    
    <uses-permission android:name="android.permission.INTERNET"/>