0

私は毎回 UnknownHostException を取得しています。これはコードの私の部分です:

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);

HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();

3行目に例外があります。

Wifi 接続を再起動しました。データプランも利用しました。HttpPost の代わりに HttpGet クラスも試してみました URL はブラウザ上で完全に動作します

理解できません、本当の原因は何ですか、助けてください...

これは logcat o/p です:-

02-10 22:41:33.307: W/System.err(16016): java.net.UnknownHostException: Unable to resolve host "www.offerpunch.com": No address associated with hostname
02-10 22:41:33.317: W/System.err(16016):    at java.net.InetAddress.lookupHostByName(InetAddress.java:424)
02-10 22:41:33.317: W/System.err(16016):    at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
02-10 22:41:33.317: W/System.err(16016):    at java.net.InetAddress.getAllByName(InetAddress.java:214)
02-10 22:41:33.317: W/System.err(16016):    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:141)
02-10 22:41:33.317: W/System.err(16016):    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
02-10 22:41:33.317: W/System.err(16016):    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
02-10 22:41:33.317: W/System.err(16016):    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
02-10 22:41:33.317: W/System.err(16016):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
02-10 22:41:33.317: W/System.err(16016):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
02-10 22:41:33.317: W/System.err(16016):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
02-10 22:41:33.317: W/System.err(16016):    at com.android.offerpunch.util.JSONParserForArray.getJSONFromUrl(JSONParserForArray.java:38)
02-10 22:41:33.317: W/System.err(16016):    at com.android.offerpunch.SearchResultActivity$OffersList.doInBackground(SearchResultActivity.java:103)
02-10 22:41:33.317: W/System.err(16016):    at com.android.offerpunch.SearchResultActivity$OffersList.doInBackground(SearchResultActivity.java:1)
02-10 22:41:33.317: W/System.err(16016):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
02-10 22:41:33.317: W/System.err(16016):    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
02-10 22:41:33.317: W/System.err(16016):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
02-10 22:41:33.317: W/System.err(16016):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
02-10 22:41:33.317: W/System.err(16016):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
02-10 22:41:33.317: W/System.err(16016):    at java.lang.Thread.run(Thread.java:856)
02-10 22:41:33.327: W/System.err(16016): Caused by: libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname)
02-10 22:41:33.327: W/System.err(16016):    at libcore.io.Posix.getaddrinfo(Native Method)
02-10 22:41:33.327: W/System.err(16016):    at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:59)
02-10 22:41:33.327: W/System.err(16016):    at java.net.InetAddress.lookupHostByName(InetAddress.java:405)
02-10 22:41:33.327: W/System.err(16016):    ... 18 more
02-10 22:41:33.327: E/Buffer Error(16016): Error converting result java.lang.NullPointerException: lock == null
02-10 22:41:33.327: E/JSON Parser(16016): Error parsing data org.json.JSONException: End of input at character 0 of 
02-10 22:41:33.337: W/dalvikvm(16016): threadid=12: thread exiting with uncaught exception (group=0x41458ae0)
02-10 22:41:33.337: E/AndroidRuntime(16016): FATAL EXCEPTION: AsyncTask #2
02-10 22:41:33.337: E/AndroidRuntime(16016): java.lang.RuntimeException: An error occured while executing doInBackground()
02-10 22:41:33.337: E/AndroidRuntime(16016):    at android.os.AsyncTask$3.done(AsyncTask.java:299)
02-10 22:41:33.337: E/AndroidRuntime(16016):    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
02-10 22:41:33.337: E/AndroidRuntime(16016):    at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
02-10 22:41:33.337: E/AndroidRuntime(16016):    at java.util.concurrent.FutureTask.run(FutureTask.java:239)
02-10 22:41:33.337: E/AndroidRuntime(16016):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
02-10 22:41:33.337: E/AndroidRuntime(16016):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
02-10 22:41:33.337: E/AndroidRuntime(16016):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
02-10 22:41:33.337: E/AndroidRuntime(16016):    at java.lang.Thread.run(Thread.java:856)
02-10 22:41:33.337: E/AndroidRuntime(16016): Caused by: java.lang.NullPointerException
02-10 22:41:33.337: E/AndroidRuntime(16016):    at com.android.offerpunch.SearchResultActivity$OffersList.doInBackground(SearchResultActivity.java:104)
02-10 22:41:33.337: E/AndroidRuntime(16016):    at com.android.offerpunch.SearchResultActivity$OffersList.doInBackground(SearchResultActivity.java:1)
02-10 22:41:33.337: E/AndroidRuntime(16016):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
02-10 22:41:33.337: E/AndroidRuntime(16016):    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
02-10 22:41:33.337: E/AndroidRuntime(16016):    ... 4 more
4

1 に答える 1

1

渡すURL文字列がでHttpPost始まることを確認してくださいhttp://

EDIT:以下のコードサンプルでリクエストを実行できました(httpプレフィックスに注意してください)

private void httpStuff() {
    new AsyncTask<Void, Void, String>() {
        @Override
        protected String doInBackground(Void... params) {
            BufferedReader reader = null;
            try {
                String url = "http://www.offerpunch.com/parser/index.php/deals?SR=1&cat_id=&SRcat_id=&SRkeyword=hddhh&deal_city=&deal_area=";
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);

                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                InputStream is = httpEntity.getContent();
                reader = new BufferedReader(new InputStreamReader(is));

                StringBuilder total = new StringBuilder();
                String line;
                while ((line = reader.readLine()) != null) {
                    total.append(line);
                }
                return total.toString();

            } catch (ClientProtocolException ex) {
                Log.e("LOG_TAG", null, ex);
            } catch (IOException ex) {
                Log.e("LOG_TAG", null, ex);
            } finally {
                if (reader != null) {
                    try {
                        reader.close();
                    } catch (IOException ex) {
                    }
                }
            }
            return null;
        }

        protected void onPostExecute(String result) {
            if (result == null) {
                Log.d("LOG_TAG", "Result is null");
            } else {
                Log.d("LOG_TAG", "Result size: " + result.length());
                Log.d("LOG_TAG", result);
            }

        };
    }.execute();
}

結果は巨大な文字列 (最大 900k の長さ) になり、ユーザーが解析されたデータを実際に理解できるかどうかさえわかりませんが、それはトピック外です。

あなたの場合、ここに記載されInternetているように許可を間違った場所に置いているか、アプリを安っぽいエミュレーターで実行しているか、アプリを実行しているデバイスに接続していないだけだと思います。

もう1つNullPointerException、サーバー側からの結果が正しいと想定しているためです。解析する前に、null 以外のチェックがあることを確認してください ...

于 2014-02-10T17:26:34.513 に答える