Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSONException PHP Android_Php_Android - Fatal编程技术网

JSONException PHP Android

JSONException PHP Android,php,android,Php,Android,你能帮我吗? 所以我想从远程数据库获取数据。 我已经下载并安装了WAMP服务器并连接到远程数据库,我已经添加了一些行ecc。。。 使用PHPStorm,我创建了一个看起来很有效的脚本,它显示了我所需要的一切。 问题是logcat,你能告诉我如何修复它吗 11-07 20:12:21.139 17619-17619/com.example.arnold.itsosgadda E/log_data: Comunicazione n.129 <a href="http://www.it

你能帮我吗? 所以我想从远程数据库获取数据。 我已经下载并安装了WAMP服务器并连接到远程数据库,我已经添加了一些行ecc。。。 使用PHPStorm,我创建了一个看起来很有效的脚本,它显示了我所需要的一切。 问题是logcat,你能告诉我如何修复它吗

    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)
11-07 20:12:21.139 17619-17619/com.example.arnold.itsosgada E/log\u数据:Comunicazione n.129下载
11-07 20:12:21.139 17619-17619/com.example.arnold.itsosgada W/System.err:org.json.JSONException:java.lang.String类型的值Comunicazione无法转换为JSONArray 11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgada W/System.err:at org.json.json.typemissmatch(json.java:111) 11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgada W/System.err:at org.json.JSONArray.(JSONArray.java:96) 11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgada W/System.err:at org.json.JSONArray.(JSONArray.java:108) 11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgada W/System.err:at com.example.arnold.itsosgada.CommunicationsActivity.connect(CommunicationsActivity.java:59) 11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgada W/System.err:at com.example.arnold.itsosgada.CommunicationsActivity.onCreate(CommunicationsActivity.java:36) 11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgada W/System.err:at-android.app.Activity.performCreate(Activity.java:5231) 11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgada W/System.err:at-android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgada W/System.err:at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199) 11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgada W/System.err:at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2285) 11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgada W/System.err:at-android.app.ActivityThread.access$800(ActivityThread.java:138) 11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgada W/System.err:at-android.app.ActivityThread$H.handleMessage(ActivityThread.java:1236) 11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgada W/System.err:at-android.os.Handler.dispatchMessage(Handler.java:102) 11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgada W/System.err:at-android.os.Looper.loop(Looper.java:149) 11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgada W/System.err:at-android.app.ActivityThread.main(ActivityThread.java:5061) 11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgada W/System.err:at java.lang.reflect.Method.invokenactive(本机方法) 11-07 20:12:21.149 17619-17619/com.example.arnold.itsosgada W/System.err:at java.lang.reflect.Method.invoke(Method.java:515) 11-07 20:12:21.159 17619-17619/com.example.arnold.itsosgada 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.itsosgada W/System.err:at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:603) 11-07 20:12:21.159 17619-17619/com.example.arnold.itsosgada W/System.err:at dalvik.System.NativeStart.main(本机方法)
这里是我的PHP脚本
首先,你不应该发布你的IP。说到您的问题,您收到了一个无法转换为JSON的HTML页面。这可能是一个错误或其他任何情况,在尝试将其转换为JSON之前,请尝试打印收到的响应,您可能会知道发生了什么情况

php生成的JSON文件中有一个错误。特定的安卓认为您提供的pdf链接不是JSONArray,可能是json对象?建议您测试json并在此处发布整个json响应

您没有访问/config.php的权限
检查您的服务器配置或粘贴您的服务器配置现在问题是其他的……我有另一种类型的问题为什么您在php中返回HTML?如果需要JSON,请在while循环中创建一个数组填充它,给元素一个名称和值,并在循环后对其进行JSON编码。如果您不想在客户端将HTML解码为JSON,您可以在JSON值中创建一个HTML格式字符串,但需要给它一个键名,然后将数组编码为JSON
<?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();
?>
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);
    }*/

}