2015-11-07 39 views
-1

你能幫助我嗎? 所以我正在尋找從遠程數據庫獲取數據。 我已經下載並安裝WAMP的服務器連接到遠程數據庫中,我加入了一些行ECC ... 用PHP風暴工作,我創建腳本,這似乎是工作,它顯示了所有我需要的。 問題是logcat的,你能告訴我該如何解決?JSONException PHP的Android

11-07 20:12:21.139 17619-17619/com.example.arnold.itsosgadda E/log_data: Comunicazione n.129 <a href="http://www.itsosgadda.it/comunicazioni/pubbliche/2015-16%20Comunicazione%20129%20Uscita%20didattica%203B%20museo%20del%20computer%20Fornovo.pdf">Download<br> 
11-07 20:12:21.139 17619-17619/com.example.arnold.itsosgadda W/System.err: org.json.JSONException: Value Comunicazione of type java.lang.String cannot be converted to JSONArray 
11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgadda W/System.err:  at org.json.JSON.typeMismatch(JSON.java:111) 
11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgadda W/System.err:  at org.json.JSONArray.<init>(JSONArray.java:96) 
11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgadda W/System.err:  at org.json.JSONArray.<init>(JSONArray.java:108) 
11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgadda W/System.err:  at com.example.arnold.itsosgadda.CommunicationsActivity.connect(CommunicationsActivity.java:59) 
11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgadda W/System.err:  at com.example.arnold.itsosgadda.CommunicationsActivity.onCreate(CommunicationsActivity.java:36) 
11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgadda W/System.err:  at android.app.Activity.performCreate(Activity.java:5231) 
11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgadda W/System.err:  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgadda W/System.err:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199) 
11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgadda W/System.err:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2285) 
11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgadda W/System.err:  at android.app.ActivityThread.access$800(ActivityThread.java:138) 
11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgadda W/System.err:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1236) 
11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgadda W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:102) 
11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgadda W/System.err:  at android.os.Looper.loop(Looper.java:149) 
11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgadda W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:5061) 
11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgadda W/System.err:  at java.lang.reflect.Method.invokeNative(Native Method) 
11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgadda W/System.err:  at java.lang.reflect.Method.invoke(Method.java:515) 
11-07 20:12:21.159 17619-17619/com.example.arnold.itsosgadda W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) 
11-07 20:12:21.159 17619-17619/com.example.arnold.itsosgadda W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:603) 
11-07 20:12:21.159 17619-17619/com.example.arnold.itsosgadda W/System.err:  at dalvik.system.NativeStart.main(Native Method) 

這裏我的PHP腳本

<?php 
/** 
* Created by PhpStorm. 
* User: Arnol'd 
* Date: 07.11.2015 
* Time: 15:27 
*/ 
$username = 'app'; 
$password = '4826159g'; 
$hostname = 'xxx.xxx.xxx.xxx:xxxx'; 
$database = 'app_db'; 
$conn = new mysqli($hostname, $username, $password, $database); 
if ($conn->connect_error) { 
    die("Connection failed:" . $conn->connect_error); 
} 
$sql = "select * from push"; 
$result = $conn->query($sql); 
if ($result->num_rows > 0) { 
    while ($row = $result->fetch_assoc()) { 
     echo $row["push_name"] . ' <a href="'.$row['link'].'">' . 'Download' . "<br>"; 

    } 
} 
else{ 
    echo "0 results"; 
} 
$conn->close(); 
?> 

這裏我的Java的Android代碼

package com.example.arnold.itsosgadda; 

import android.app.ActionBar; 
import android.app.Activity; 
import android.graphics.Color; 
import android.graphics.drawable.ColorDrawable; 
import android.os.Bundle; 
import android.os.StrictMode; 
import android.util.Log; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.util.EntityUtils; 
import org.json.JSONArray; 
import org.json.JSONObject; 

import java.util.ArrayList; 
import java.util.List; 

@SuppressWarnings("deprecation") 
public class CommunicationsActivity extends Activity { 
    private String jsonResult; 
    private String url = "http://xxx.xxx.xxx.xxx:xxxx/config.php"; 
    private ListView listView; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.communications_news_layout); 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 

     connect(); 

     ActionBar actionBar = getActionBar(); 
     assert actionBar != null; 
     actionBar.setIcon(R.mipmap.ic_launcher); 
     actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#ffeb3b"))); 
    } 

    private void connect() { 
     String data; 
     List<String> listData = new ArrayList<>(); 
     ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplicationContext(), 
       android.R.layout.simple_list_item_1, listData); 
     listView = (ListView) findViewById(R.id.listView); 
     try { 
      DefaultHttpClient client = new DefaultHttpClient(); 
      HttpPost request = new HttpPost(url); 
      request.setHeader("Accept","application/json"); 
      HttpResponse response = client.execute(request); 
      HttpEntity entity = response.getEntity(); 
      data = EntityUtils.toString(entity); 
      Log.e("log_data", data); 
      try { 
       JSONArray jsonArray = new JSONArray(data); 
       for (int i = 0; i < jsonArray.length(); i++) { 
        JSONObject obj = jsonArray.getJSONObject(i); 
        String name = obj.optString("push_name"); 
        String link = obj.getString("link"); 
        Log.e("log_data", name); 

        listData.add(name); 
        listData.add(link); 
        listView.setAdapter(adapter); 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 


    /*final CommunicationsActivity activity = this; 
    final String url = "http://www.itsosgadda.it/index.php/comunicazioni-pubbliche"; 
    @SuppressLint("SetJavaScriptEnabled") 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.getWindow().requestFeature(Window.FEATURE_PROGRESS); 
     ActionBar actionBar = getActionBar(); 
     assert actionBar != null; 
     actionBar.setIcon(R.mipmap.ic_launcher); 
     actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#ffeb3b"))); 
     //Shows me status bar progress 

     setContentView(R.layout.communications_news_layout); 
     WebView webView = (WebView) findViewById(R.id.webView); 
     //Enables JS 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.getSettings().setSupportZoom(true); 
     webView.getSettings().setBuiltInZoomControls(true); 
     //noinspection deprecation 
     webView.getSettings().setDefaultZoom(FAR); 
     webView.setWebChromeClient(new WebChromeClient() { 
      public void onProgressChanged(WebView view, int progress) { 
       activity.setTitle(R.string.loading_progress); 
       activity.setProgress(progress * 100); 
       if (progress == 100) { 
        activity.setTitle(R.string.app_name); 
       } 
      } 
     }); 

     webView.setWebViewClient(new WebViewClient() { 
      @Override 
      public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
       // Handle the error 
       Log.i("WEB_VIEW_COMMUNICATIONS", "Error code: " + errorCode); 
       super.onReceivedError(view, errorCode, description, failingUrl); 
      } 

      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url); 
       return true; 
      } 
     }); 
     webView.loadUrl(url); 
    }*/ 

} 
+0

'你沒有權限訪問/ config.php'檢查您的服務器配置或粘貼您的服務器配置 –

+0

現在的問題是其他.... –

回答

0

首先,你不應該公佈你的IP。談到你的問題,你正在接收一個無法轉換爲JSON的HTML頁面。它可以是一個錯誤或其他任何東西,儘量設法將其轉換爲JSON之前打印接收到的響應,也許你會知道發生了什麼

+0

我有另一種類型的問題 –

+0

爲什麼要退HTML中的PHP?如果你想要JSON,創建一個數組在while循環中填充它,給元素一個名稱和值,並在循環json之後對它進行編碼。如果你想HTML不要在客戶端進行譯碼後,JSON –

+0

您可以創建在你的JSON值的HTML格式的字符串,但你需要給它一個關鍵的名稱,然後編碼數組JSON –

0

你這是由PHP生成您的JSON文件中的錯誤。特別是android認爲你餵它的pdf鏈接不是JSONArray,也許它是一個json對象?建議您測試json http://jsonlint.com/並在此處發佈您的整個json響應。