Java Can';无法连接到db android,因为解析json时出错
我无法从我的网站连接并显示我的json,因为我收到一个错误:Java Can';无法连接到db android,因为解析json时出错,java,php,android,json,Java,Php,Android,Json,我无法从我的网站连接并显示我的json,因为我收到一个错误: java.lang.String无法转换为JSONArray 代码如下: public class MainActivity extends Activity { /** Called when the activity is first created. */ private TextView results; @Override public void onCreate(Bundle savedIn
java.lang.String无法转换为JSONArray
代码如下:
public class MainActivity extends Activity
{
/** Called when the activity is first created. */
private TextView results;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
results = (TextView) findViewById(R.id.results);
results.setText(invioDati());
}
public String invioDati() {
String risultati = "";
String stringaFinale = "";
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("idnomerichiesto","1"));
InputStream is = null;
//HTTP post richiesta
try {
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://www.davidedellai.net/jsonphp.php");
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch (Exception e) {
Toast.makeText(this, "Errore connessione", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
if (is != null) {
// converto la risposta in stringa
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
risultati = sb.toString();
}catch (Exception e) {
// errore conversione in stringa
Toast.makeText(this, "Errore stringa "+e.toString(), Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
// parsing dei dati dal json
try {
JSONArray jArray = new JSONArray(risultati);
for (int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
Log.i("Test", "post_title " + json_data.getString("post_title"));
stringaFinale = json_data.getString("post_title") + " " + (json_data.getString("post_content"));
}
} catch(JSONException e) {
//errore parsing data json
Toast.makeText(this, "Errore parsing json", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
} else {
// null quindi nessuna risposta
Toast.makeText(this, "Null", Toast.LENGTH_SHORT).show();
}
return stringaFinale;
}
}
公共类MainActivity扩展活动
{
/**在首次创建活动时调用*/
私有文本视图结果;
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
StrictMode.ThreadPolicy policy=新建StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(策略);
结果=(TextView)findViewById(R.id.results);
结果:setText(invioDati());
}
公共字符串invioDati(){
字符串risultati=“”;
字符串stringaFinale=“”;
ArrayList nameValuePairs=新的ArrayList();
添加(新的BasicNameValuePair(“idnomerichiesto”,“1”);
InputStream=null;
//HTTP-post-richiesta
试一试{
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(“http://www.davidedellai.net/jsonphp.php");
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
HttpResponse response=httpClient.execute(httpPost);
HttpEntity=response.getEntity();
is=entity.getContent();
}捕获(例外e){
Toast.makeText(这是“错误连接”,Toast.LENGTH_SHORT).show();
e、 printStackTrace();
}
如果(is!=null){
//斯特林加里斯珀斯塔酒店
试一试{
BufferedReader reader=新的BufferedReader(新的InputStreamReader(is,“utf-8”),8;
StringBuilder sb=新的StringBuilder();
字符串行=null;
而((line=reader.readLine())!=null){
sb.追加(第+行“\n”);
}
is.close();
risultati=sb.toString();
}捕获(例外e){
//stringa中的一个错误
Toast.makeText(这是“Errore stringa”+e.toString(),Toast.LENGTH_SHORT).show();
e、 printStackTrace();
}
//解析dei-dati-dal-json
试一试{
JSONArray jArray=新JSONArray(risultati);
对于(int i=0;我可以打印通过php发送的json结果吗?可能是因为您的json无效,因为您可以在php标记之前/之后使用DOM字符(或空格,或任何可以伪造json响应的字符)。您的JSON可能包含无效字符。请尝试使用各种JSON_encode标志对字符串进行编码。例如,JSON_encode(数组($output),JSON_HEX_APOS)
将解析$output
中的任何撇号。有关可用标记的完整列表,请参阅手册。这是PHP似乎工作正常的输出,请您提供java错误的完整堆栈,在创建JSON阵列之前,您是否也可以检查risultati的内容?没有任何结果:(
<?php
// parametri del database
$db_host = "localhost";
$db_user = "user";
$db_password = "";
$db_name = "mydb";
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die ("Errore nella connessione. Verificare i parametri...");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri...");
$q=mysql_query("SELECT post_name, post_content FROM avwp_posts WHERE post_status = 'publish' ");
while($e=mysql_fetch_assoc($q))
$output[]=$e;
print json_encode(array($output));
mysql_close();
?>