将JSON数据从PHP脚本传递到Android

时间:2014-04-16 01:56:19

标签: php android json

在PHP端,我收到了一个我们要发回给Android的JSON对象。 PHP代码很简单,就像我在几乎所有教程中看到的一样,回应JSON对象。

此行每隔一个查询创建一个例外。我做错了什么?

JSONObject json = jsonParser.makeHttpRequest(signInURL,
                    "POST", params1);

 04-15 21:40:44.787: E/AndroidRuntime(6325): java.lang.RuntimeException: An error occured while executing doInBackground()

我正在遵循这些说明:

如何在我们的应用程序中使用json。

  • 当android应用程序执行时,它会将android设备连接到PHP脚本。
  • PHP脚本将从数据库中获取数据。它会将其编码为json格式并将其发送到设备。
  • 现在,android应用程序将获取这些编码数据。它将解析数据并将其显示在Android设备上。

在我们的Android应用程序中,

  • 使用HttpPost获取数据
  • 将响应转换为字符串
  • 解析JSON数据,并根据需要使用

编辑:问题实际上只是需要修复的PHP警告。谢谢大家!

3 个答案:

答案 0 :(得分:3)

在AndroidManifest.xml中设置互联网权限:

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

从android到服务器的Http请求

public String httpRequest(String url, String query, int methodtype){

    try {
        String reqUrl = url + query;

        switch (methodtype) {
            case 1:
                HttpGet httpGet = new HttpGet(reqUrl);
                httpResponse = httpClient.execute(httpGet);
                break;
            case 2:
                HttpPost httpPost = new HttpPost(reqUrl);
                httpResponse = httpClient.execute(httpPost);
                break;

        }



        HttpEntity httpEntity = httpResponse.getEntity();
        instrObj = httpEntity.getContent();

    } catch (UnsupportedEncodingException e) {
        //HandleException
    } catch (ClientProtocolException e) {
        //HandleException
    } catch (IOException e) {
        //HandleException
    }

    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(instrObj, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        instrObj.close();
        json = sb.toString();

    } catch (Exception e) {

    }       
    return json;
}

为了将表单数据发布到服务器,使用HttpPost并从服务器中检索数据HttpGet被使用....

答案 1 :(得分:1)

有时候没有设置互联网权限。

要设置互联网权限,请执行以下操作:

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

希望这会有所帮助.. :)

答案 2 :(得分:1)

试试这段代码

try {
    URL Url = new URL(" --------");
    HttpURLConnection connection = (HttpURLConnection) Url.openConnection();
    connection.connect();

    int responseCode = connection.getResponseCode();
    if (responseCode == HttpURLConnection.HTTP_OK) {
        InputStream inputStream = connection.getInputStream();
        Reader reader = new InputStreamReader(inputStream);

        int contentLength = connection.getContentLength();
        char[] charArray = new char[contentLength];
        reader.read(charArray);

        JSONObject jsonResponse = new JSONObject(charArray.toString());
    }
    else {
        Log.i("", "HTTP Response Code: " + responseCode);
    }
}
catch (Exception e) {
}