2011-08-09 170 views
0

您好我想下面錯誤HTTP連接

http://abovestress.com/app_stress/fetch_all_detail.php?task=fetchtimefromdateanduserid&track_date=2011-08-09&tracker_user_id=374 

給出,但我不能讓我產生代碼來從鏈路數據是在這裏

package com.JsonDemo; 

import java.io.BufferedReader; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 

public class JsonDemoActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    ArrayList<String> fetchsosfromID = new ArrayList<String>(); 
    String result = ""; 
    InputStream is = null; 

    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
    nameValuePairs.add(new BasicNameValuePair("track_date","2011-08-09")); 
    nameValuePairs.add(new BasicNameValuePair("tracker_user_id",""+374)); 

    try { 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost(
       "http://abovestress.com/app_stress/fetch_all_detail.php?task=fetchtimefromdateanduserid&"); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     is = entity.getContent(); 
    } catch (Exception e) { 
     Log.e("log_tag", "Error in http connection " + e.toString()); 
    } 
    // convert response to string 
    try { 
     BufferedReader reader = new BufferedReader(new InputStreamReader(
       is, "iso-8859-1"), 8); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 
     is.close(); 
     result = sb.toString(); 
     Log.v("log_tag", "Append String " + result); 
    } catch (Exception e) { 
     Log.e("log_tag", "Error converting result " + e.toString()); 
    } 

    // parse json data 
    try { 
     JSONArray jArray = new JSONArray(result); 
     for (int i = 0; i < jArray.length(); i++) { 
      JSONObject json_data = jArray.getJSONObject(i); 
      fetchsosfromID.add(json_data.getString("track_time")); 
      Log.v("log_tag", "daily_data " + fetchsosfromID); 
     } 
    } catch (JSONException e) { 
     Log.e("log_tag", "Error parsing data " + e.toString()); 
    } 
} 

}

和錯誤是這樣的

08-09 17:29:01.315: ERROR/log_tag(2291): Error in http connection java.net.UnknownHostException: abovestress.com 
08-09 17:29:01.315: ERROR/log_tag(2291): Error converting result java.lang.NullPointerException 
08-09 17:29:01.345: ERROR/log_tag(2291): Error parsing data org.json.JSONException: End of input at character 0 of 

顯示爲

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.JsonDemo" 
    android:versionCode="1" 
    android:versionName="1.0"> 
<uses-sdk android:minSdkVersion="9" /> 

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".JsonDemoActivity" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <uses-permission android:name="android.permission.INTERNET"/> 
</application> 
</manifest> 

回答

2

你需要把許可標記,把應用標籤。 ..

4

你肯定添加了

<uses-permission android:name="android.permission.INTERNET"></uses-permission> 
在您的清單

,對不對?您的<uses-permission>錯誤地址。它應該是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.JsonDemo" 
    android:versionCode="1" 
    android:versionName="1.0"> 
<uses-sdk android:minSdkVersion="9" /> 

<uses-permission android:name="android.permission.INTERNET"/> 
<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".JsonDemoActivity" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 
</manifest> 
+0

是的肯定................. –

+0

是........................ ....... –

+0

爲了以防萬一,你能發佈你的清單嗎? – Otra

0

例外你指向一個名稱解析問題(獲得abovestress.com IP從DNS服務器地址)。這可能是因爲你的網絡關閉了。

一個簡單的代碼片段來檢查網絡連接起來,其中Context ctx是你的活動背景:

public boolean checkConnection(Context ctx) { 
    ConnectivityManager conMgr = 
    (ConnectivityManager)ctx.getSystemService(Context.CONNECTIVITY_SERVICE); 

    NetworkInfo i = conMgr.getActiveNetworkInfo(); 
    if (i == null) 
     return false; 
    if (!i.isConnected()) 
     return false; 
    if (!i.isAvailable()) 
     return false; 
    return true; 
} 

編輯:

如果網絡不是你的問題,看看herehere

您可能需要添加(除了android.permission.INTERNET)其他權限:

android.permission.ACCESS_NETWORK_STATE 
android.permission.READ_PHONE_STATE 

和/或:

try { 
    InetAddress i = InetAddress.getByName(URLName); 
} catch (UnknownHostException e1) { 
    e1.printStackTrace(); 
} 
// ... actually using URL 

編輯2:AND,如由他人注意,uses-permission元素走了進去manifest元素,而不是application元素

+0

不,網絡是好的,因爲其他應用程序正在Json –

+0

上運行好了,看看我編輯的答案,瞭解替代解決方案的主機名解析問題 –