Android http连接中出现错误

Android http连接中出现错误,android,Android,嗨,我正在尝试从下面给出的链接获取数据 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.InputS

嗨,我正在尝试从下面给出的链接获取数据

 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());
    }
}
修甲师

<?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>

您肯定添加了

<uses-permission android:name="android.permission.INTERNET"></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>

您肯定添加了

<uses-permission android:name="android.permission.INTERNET"></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>

您得到的异常指向名称解析问题(从DNS服务器获取superstress.com ip地址)。这可能是因为您的网络已关闭

检查网络连接是否正常的简单代码段,其中
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;
}
编辑:

如果网络中没有您的问题,请查看并解决

您可能需要添加(除了
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:并且,正如其他人所指出的,
使用权限
元素进入
清单
元素,而不是
应用程序
元素

您得到的异常指向名称解析问题(从DNS服务器获取superstress.com ip地址)。这可能是因为您的网络已关闭

检查网络连接是否正常的简单代码段,其中
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;
}
编辑:

如果网络中没有您的问题,请查看并解决

您可能需要添加(除了
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:并且,正如其他人所指出的,
使用权限
元素进入
清单
元素,而不是
应用程序
元素

您需要将权限标记放入应用程序标记的put…

您需要将权限标记放入应用程序标记的put…

不,网络正常,因为其他应用程序正在使用Jsonok,请看我编辑的答案,了解解决主机名解析问题的可能替代方法否,网络正常,因为其他应用程序正在使用Jsonok,请看我编辑的答案,了解解决主机名解析问题的可能替代方法这是一个明显的问题。
应该在
标签之外。@Jignesh Ansodariya:你能不能停止使用两万个点?如果你的评论没有足够的字符,那就简单的造句吧。谢谢,这是个明显的问题。
应该在
标签之外。@Jignesh Ansodariya:你能不能停止使用两万个点?如果你的评论没有足够的字符,那就简单的造句吧。非常感谢。