-4

我是 android 世界的新手,我正在尝试从以下 URL 检索 JSONArray:http: //www.softmarketing.it/json/view/azienda/7

TabHostExample.java:

public class TabHostExample extends TabActivity {

private static String url = "http://www.softmarketing.it/json/view/azienda/7";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tab_host_example);

    //JSONParser parser= new JSONParser();
    //JSONObject myJSON= parser.makeHttpRequest(url, "POST", null);
    try{
        // Create a new HTTP Client
        DefaultHttpClient defaultClient = new DefaultHttpClient();
        // Setup the get request
        HttpGet httpGetRequest = new HttpGet("http://www.softmarketing.it/json/view/azienda/7");

        // Execute the request in the client
        HttpResponse httpResponse = defaultClient.execute(httpGetRequest);
        // Grab the response
        BufferedReader reader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent(), "UTF-8"));
        String json = reader.readLine();

        // Instantiate a JSON object from the request response
        JSONObject jsonObject = new JSONObject(json);

    } catch(Exception e){
        // In your production code handle any errors and catch the individual exceptions
        e.printStackTrace();
    }

           .....

在 LogCat 我看到这个:

12-16 08:14:41.987: E/MYAPP(1183): exception: null
12-16 08:21:34.927: E/MYAPP(1245): exception: null

并且变量 e 具有以下值:

e:原因:NetworkOnMainThreadEception

和其他价值观...

请问你能帮帮我吗?我试图解决解析已经三天了......谢谢

4

2 回答 2

0

因此,您需要在与 UI 不同的线程中获取 json 内容......然后对其进行解析。

您可以使用 Asynctask 和 HttpGetClient

或者

您可以使用Android 异步 Http 客户端库。非常简单的库,很小的大小(25kb),易于使用和异步代码将类似于:

AsyncHttpClient client = new AsyncHttpClient();
client.get("http://www.softmarketing.it/json/view/azienda/7", new AsyncHttpResponseHandler() {
    @Override
    public void onSuccess(String response) {
      // Here is your content !
      // now you have to parse it
      System.out.println(response);
    }
});

在这里可用

然后,您必须根据需要解析文件。(如果是 json 格式,我推荐您使用 Gson 库)

剩下的就靠你了!

于 2013-12-16T13:33:23.000 回答
0

Android 不允许您在主线程(GUI 线程)上执行慢速操作,这些操作包括网络活动等 IO 操作。

如果不是这种情况,并且您的 android 应用程序正在发布到在线服务,因为线程将忙于等待服务器响应,GUI 将锁定,并且用户输入将被忽略,直到线程完成发送和接收对 Web 服务的响应。如果这种情况持续太久,我认为大约 5 秒,您的应用程序会显示 ANR 消息(应用程序无响应)。这将允许用户等待,并希望您的应用程序恢复,或强制停止应用程序,这是最有可能的选择。

您还需要确保android:name="android.permission.INTERNET"在您的项目中拥有 AndroidManifest 文件。

于 2013-12-16T15:27:42.257 回答