【发布时间】:2014-05-08 05:48:47
【问题描述】:
我一直在这个 URL 中阅读这个 json 文件。我在网上尝试了很多示例,但无法读取此 URL 中的特定 json 文件
[https://203.177.52.163:1985/restgateway/services/ws_download/Book/3372/Plant/03/User/12334]. Please help me what is wrong with this. Thank you for your help.
//这是我的代码示例..
包com.hmkcode.android; 导入 java.io.BufferedReader; 导入 java.io.IOException; 导入 java.io.InputStream; 导入 java.io.InputStreamReader; 导入 org.apache.http.HttpResponse; 导入 org.apache.http.client.HttpClient; 导入 org.apache.http.client.methods.HttpGet; 导入 org.apache.http.impl.client.DefaultHttpClient; 导入 android.net.ConnectivityManager; 导入android.net.NetworkInfo; 导入android.os.AsyncTask; 导入android.os.Bundle; 导入android.util.Log; 导入 android.widget.EditText; 导入 android.widget.TextView; 导入 android.widget.Toast; 导入android.app.Activity; 公共类 MainActivity 扩展 Activity { EditText etResponse; TextView tvIsConnected; @覆盖 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取对视图的引用 etResponse = (EditText) findViewById(R.id.etResponse); tvIsConnected = (TextView) findViewById(R.id.tvIsConnected); // 检查是否连接 如果(isConnected()){ tvIsConnected.setBackgroundColor(0xFF00CC00); tvIsConnected.setText("您已连接"); } 别的{ tvIsConnected.setText("你没有连接"); } // 调用 AsynTask 在单独的线程上执行网络操作 //new HttpAsyncTask().execute("http://hmkcode.appspot.com/rest/controller /get.json"); new HttpAsyncTask().execute("https://203.177.52.163:1985/restgateway/services/ws_download/Book/3372/Plant/03/User/12334"); } 公共静态字符串 GET(字符串 url){ 输入流 inputStream = null; 字符串结果 = ""; 尝试 { // 创建 HttpClient HttpClient httpclient = new DefaultHttpClient(); // 向给定的 URL 发出 GET 请求 HttpResponse httpResponse = httpclient.execute(new HttpGet(url)); // 接收响应作为 inputStream inputStream = httpResponse.getEntity().getContent(); // 将输入流转换为字符串 如果(输入流!= null) 结果 = convertInputStreamToString(inputStream); 别的 结果 = "没有工作!"; } 捕捉(异常 e){ Log.d("InputStream", e.getLocalizedMessage()); } 返回结果; } 私有静态字符串 convertInputStreamToString(InputStream inputStream) 抛出 IOException{ BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); 字符串行 = ""; 字符串结果 = ""; while((line = bufferedReader.readLine()) != null) 结果 += 行; inputStream.close(); 返回结果; } 公共布尔isConnected(){ ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Activity.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isConnected()) 返回真; 别的 返回假; } 私有类 HttpAsyncTask 扩展 AsyncTask { @覆盖 受保护的字符串doInBackground(字符串... urls){ 返回 GET(urls[0]); } // onPostExecute 显示 AsyncTask 的结果。 @覆盖 protected void onPostExecute(String result) {在此处输入代码 Toast.makeText(getBaseContext(), "收到!", Toast.LENGTH_LONG).show(); etResponse.setText(结果); } } }这是我的 activity_main.XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/tvIsConnected"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="#FF0000"
android:textColor="#FFF"
android:textSize="18dp"
android:layout_marginBottom="5dp"
android:text="is connected? " />
<EditText
android:id="@+id/etResponse"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:ems="10"
android:layout_marginTop="10dp"
android:inputType="textMultiLine" >\
<requestFocus />
</EditText>
</LinearLayout>
这段代码可以使用这个网址
new HttpAsyncTask().execute("http://hmkcode.appspot.com/rest/controller /get.json");
但如果我将其更改为这个网址
new HttpAsyncTask().execute("https://203.177.52.163:1985/restgateway/services/ws_download/Book/3372/Plant/03/User/12334");
各位,我想知道这是不是服务器问题?或者这只是此代码的错误。提前致谢。
【问题讨论】:
-
你试过吗?周围有大量 Android 读取 JSON 的示例。
-
正在读取 JSON.. 你被困在获取 json 响应或解析 JSON 响应?请解释