android - Http 响应的空指针异常

标签 android android-networking

我正在使用以下用于连接到 Internet 进行解析的类,但是我正在对 HTTPResponse 执行 NullPointerException。我还在 list 文件上添加了 Internet 权限。这是我的代码

public class XMLParser {

    public String getXMLfromUrl(String Url){

        String xml =  null;

        try{

                 DefaultHttpClien httpClient = new DefaultHttpClient();
                 HttpPost httpPost = new HttpPost();
                 HttpResponse httpRes = httpClient.execute(httpPost);
                 final int status = httpRes.getStatusLine().getStatusCode();

                 if (status != HttpStatus.SC_OK) {
                     Log.d("meassage", "------------");
                 }

                 HttpEntity httpEnt = httpRes.getEntity();
                 xml = EntityUtils.toString(httpEnt);

        }catch(UnsupportedEncodingException e){
            e.printStackTrace();
        }catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return xml;
    }

    public Document getDomElement(String xml){

        Document doc = null;

        DocumentBuilderFactory  dbf = DocumentBuilderFactory.newInstance();

        try{

            DocumentBuilder db = dbf.newDocumentBuilder();
            InputSource is = new InputSource();
            is.setCharacterStream(new StringReader(xml));
            doc = db.parse(is);

        }catch (ParserConfigurationException e) {
            Log.e("Error: ", e.getMessage());
            return null;
        } catch (SAXException e) {
            Log.e("Error: ", e.getMessage());
            return null;
        } catch (IOException e) {
            Log.e("Error: ", e.getMessage());
            return null;
        }


        return doc;
    }
}

帮我找出我哪里做错了,并提出需要修改的建议。谢谢。 这是堆栈跟踪

12-04 16:58:00.109: E/AndroidRuntime(2662): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gallery.parsing.madhuri/com.example.gallery.parsing.madhuri.MainActivity}: java.lang.NullPointerException
12-04 16:58:00.109: E/AndroidRuntime(2662):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
12-04 16:58:00.109: E/AndroidRuntime(2662):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
12-04 16:58:00.109: E/AndroidRuntime(2662):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
12-04 16:58:00.109: E/AndroidRuntime(2662):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
12-04 16:58:00.109: E/AndroidRuntime(2662):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-04 16:58:00.109: E/AndroidRuntime(2662):     at android.os.Looper.loop(Looper.java:137)
12-04 16:58:00.109: E/AndroidRuntime(2662):     at android.app.ActivityThread.main(ActivityThread.java:4424)
12-04 16:58:00.109: E/AndroidRuntime(2662):     at java.lang.reflect.Method.invokeNative(Native Method)
12-04 16:58:00.109: E/AndroidRuntime(2662):     at java.lang.reflect.Method.invoke(Method.java:511)
12-04 16:58:00.109: E/AndroidRuntime(2662):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
12-04 16:58:00.109: E/AndroidRuntime(2662):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
12-04 16:58:00.109: E/AndroidRuntime(2662):     at dalvik.system.NativeStart.main(Native Method)
12-04 16:58:00.109: E/AndroidRuntime(2662): Caused by: java.lang.NullPointerException
12-04 16:58:00.109: E/AndroidRuntime(2662):     at org.apache.http.impl.client.AbstractHttpClient.determineTarget(AbstractHttpClient.java:496)
12-04 16:58:00.109: E/AndroidRuntime(2662):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
12-04 16:58:00.109: E/AndroidRuntime(2662):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
12-04 16:58:00.109: E/AndroidRuntime(2662):     at com.example.gallery.parsing.madhuri.XMLParser.getXMLfromUrl(XMLParser.java:37)
12-04 16:58:00.109: E/AndroidRuntime(2662):     at com.example.gallery.parsing.madhuri.MainActivity.onCreate(MainActivity.java:40)
12-04 16:58:00.109: E/AndroidRuntime(2662):     at android.app.Activity.performCreate(Activity.java:4465)
12-04 16:58:00.109: E/AndroidRuntime(2662):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-04 16:58:00.109: E/AndroidRuntime(2662):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
12-04 16:58:00.109: E/AndroidRuntime(2662):     ... 11 more

最佳答案

您还没有为 httpPost 指定任何 url。 这就是响应变得无效的原因。

应该初始化为

        HttpResponse httpResponse = new HttpResponse(url);

关于android - Http 响应的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13702009/

相关文章:

Android 在热点启用设备上发送 UDP 广播

android - 如何在android中保存listview并在需要时将其取回?

android - Google Play Store beta 和 alpha 模式只有 alpha 版本

java - Android:ProgressDialog 圆未显示

android - 从网络设备的 IP 地址列表中查找打印机 IP 地址

android - 获取我的 wifi ip 地址 Android

安卓开发日志

c++ - 如何使用NDK?从 'hello world' 应用程序开始

Android - 是否可以以编程方式禁用某些功能?

android - HttpUrlConnection 请求错误(Missing Internet permission when the permission is enabled)