-1

私はAndroidが初めてで、単純なHTTP Postを試してみました.1つが機能していましたが、メインクラスに投稿できないというエラーメッセージになりました. いくつかの Google の調査の後、代替の async-task を見つけましたが、この単純なサンプルが機能しない理由を完全には理解できません。

誰でも私を助けることができますか?

前もって感謝します。

      new MyAsyncTask().execute().toString();
        }

    class MyAsyncTask extends AsyncTask<String, Integer, Double> {
        // private ProgressBar pb;
         //pb=(ProgressBar);
         //pb.setVisibility(View.GONE);

        @Override
        protected Double doInBackground(String... params) {

            postData(params[0]);
            return null;
        }

        protected void onPostExecute(Double result){
          //  pb.setVisibility(View.GONE);
            Toast.makeText(getApplicationContext(), "command sent",   
Toast.LENGTH_LONG).show();
        }

      //  protected void onProgressUpdate(Integer... progress){
        //    pb.setProgress(progress[0]);
        //}

        public void postData(String valueIWantToSend) {
// Create a new HttpClient and Post Header
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("url(got a real one here)");

try {

// Add your data
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("myHttpData", valueIWantToSend));
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

// Execute HTTP Post Request
    HttpResponse response = httpclient.execute(httppost);

    } catch (ClientProtocolException e) {
   // Log.i("CATCH Read from server", "error");
    } catch (IOException e) {
   // Log.i("CATCH Read from server", "error");
     }
    }
   }

11-11 15:08:32.768 357-394/? E/lights﹕ write_int が /sys/class >/sec/sec_touchkey/brightness を開けませんでした

11-11 15:10:45.503 110-259/? E/SurfaceFlinger﹕ SurfaceFlinger 半透明=1 >isOpaque=0 isExternalDisplayLayer=0 isExternalBlockLayer0

11-11 15:04:57.643 28774-28790/? E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1 java.lang.RuntimeException: java.util.concurrent.FutureTask$Sync で android.os.AsyncTask$3.done(AsyncTask.java:299) で doInBackground() を実行中にエラーが発生しました.innerSetException(FutureTask.java:273) で java.util.concurrent.FutureTask.setException(FutureTask.java:124) で java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) で java.util. android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) での concurrent.FutureTask.run(FutureTask.java:137) >java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) で > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) で java. lang.Thread.run(Thread.java:856) 原因: java.lang.IllegalStateException: ターゲット ホストを null にすることも、>parameters に設定することもできません。スキーム=null、ホスト=null、パス=vlothopc.dyndns-home.com/mobile.asp で >org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.j>ava:591) で >org.apache .http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:293>) >org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) >org.apache.http.impl で。 client.AbstractHttpClient.execute(AbstractHttpClient.java:487) >org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) >com.example.miniapp2.MainActivity$1$MyAsyncTask.postData(MainActivity) .java:

4

2 に答える 2

0

ログに次の例外メッセージがあります。

Target host must not be null, or set in >parameters. scheme=null, host=null

これは、HttpPost オブジェクトの初期化中に設定したホスト値に由来する場合があります。私が思うプロトコルを指定するのを忘れました。

URL の正確な値は何ですか? まだ設定されていない場合は、「http://」で試してください。

また、コンテンツ タイプ、長さなども指定する必要があります。これがプロトコルとして必要かどうかはわかりません。

于 2013-11-11T10:13:48.170 に答える