can';无法在android中获取json数组
我试图从php脚本中获取json数据到我的android应用程序中,但是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>
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"/>