Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.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
Java 如何从URL读取Json文件?_Java_Android_Json - Fatal编程技术网

Java 如何从URL读取Json文件?

Java 如何从URL读取Json文件?,java,android,json,Java,Android,Json,我写了一个程序 我想从URL下载一个json文件,并在文本视图中显示它。。 当您单击按钮时,程序将在几秒钟后停止。 我不知道是什么问题。 请帮帮我 java代码: public class MainActivity extends Activity { TextView tx; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); s

我写了一个程序 我想从URL下载一个json文件,并在文本视图中显示它。。 当您单击按钮时,程序将在几秒钟后停止。 我不知道是什么问题。 请帮帮我

java代码:

 public class MainActivity extends Activity {
 TextView tx;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button b=(Button)findViewById(R.id.button2);
    b.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            new GetJsonTask().execute("http://shahid.ifilmtv.ir/query/englishcurrentshows");

        }
    });


}
public class GetJsonTask extends AsyncTask<String, Void, String>
{

    @Override
    protected String doInBackground(String... urls) {
        // TODO Auto-generated method stub
        return getJson(urls[0]);
    }
    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        JSONArray jsonArray;
        try {
            jsonArray = new JSONArray(result);
         JSONObject object = jsonArray.getJSONObject(1);
        tx.setText(object.getString("id"));
    }
    catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}

   public String getJson(String url) {

        try {
            InputStream inputStream = null;
            DefaultHttpClient defaultHttpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);
            HttpResponse httpResponse = defaultHttpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            inputStream = httpEntity.getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            inputStream.close();
            String result = sb.toString();
            return result;
        } catch (Exception ex) {
              Toast.makeText(getApplicationContext(), "ERROR : " + ex, Toast.LENGTH_LONG).show();
            return null;
        }

    }

}

我认为问题在于getJSON方法。我重写了以下代码。请试试这个

    public String getJson(String url) {
  try {
        DefaultHttpClient defaultHttpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);
        httpost.setHeader("Accept", "application/json");
        httpost.setHeader("Content-type", "application/json");

        ResponseHandler responseHandler = new BasicResponseHandler();
        Object resp = defaultHttpClient.execute(httpPost, responseHandler);
        String json =  resp.toString();
        // create a object here if you want
        JSONObject obj = new JSONObject(json);
        return json;        
   } catch (Exception ex) {
          Toast.makeText(getApplicationContext(), "ERROR : " + ex, Toast.LENGTH_LONG).show();
        return null;
   }

}