0

HTTP POST でファイルをサーバーにアップロードする Android プログラムを作成しました。

以前は正常に機能していましたが、現在機能していない理由はわかりません。これを Android デバイスでテストしています。エミュレータで正常に動作することを確認しました。

ブラウザでそのリンクを開くと、それでも正常に機能し、正しく開きます。

何が問題なのか教えてくれる人はいますか???

次のエラーが表示されます: (ホスト名に関連付けられたアドレスがありません)

 10-07 04:28:14.410: I/System.out(1280): executing request POST http:////path/to/my/server//api/index.php/match HTTP/1.1
10-07 04:28:14.450: W/System.err(1280): java.net.UnknownHostException: Unable to resolve host "//path/to/my/server/": No address associated with hostname

これが私のコードです...

private class UploadFilesTask extends AsyncTask<File, Void, Void> {
        @Override
        protected Void doInBackground(File... arg0) {

             HttpClient httpclient = new DefaultHttpClient();
                httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
enter code here
                    // I have not shown my REAL server address due so some restriction, So assume below URL is correct

                HttpPost httppost = new HttpPost("http://path/to/my/server/"); //Assume path is correct
                //File file = new File("/mnt/sdcard/DCIM/Camera/01.jpg");

                MultipartEntity mpEntity = new MultipartEntity();
                ContentBody cbFile = new FileBody(arg0[0], "image/jpeg");
                mpEntity.addPart("userfile", cbFile);


                httppost.setEntity(mpEntity);
                System.out.println("executing request " + httppost.getRequestLine());
                HttpResponse response = null;
                try {
                    response = httpclient.execute(httppost);
                } catch (ClientProtocolException e) {
                    // TODO Auto-generated catch block

                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block

                    e.printStackTrace();
                }
                HttpEntity resEntity = response.getEntity();

                System.out.println(response.getStatusLine());
                if (resEntity != null) {
                  try {
                      //audioFilename = EntityUtils.toString(resEntity);
                      System.out.println(EntityUtils.toString(resEntity));
                } catch (ParseException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                }
                if (resEntity != null) {
                  try {
                    resEntity.consumeContent();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                }

                httpclient.getConnectionManager().shutdown();
                return null;
        }
    }
4

3 に答える 3

0

次を試してください

  1. AVDを削除する
  2. Eclipseをシャットダウンします
  3. コマンドラインからAVDを作成しました(例:android create avd -n my_android1.5 -t 2)
  4. オプション-dns-server8.8.8.8を使用してコマンドラインから起動しました(例:エミュレーター-avd my_android1.5 -dns-server 8.8.8.8)

psマニフェストファイルのインターネット許可を誤って削除していないことを確認してください。また、その間、Androidブラウザでアドレスが機能することを確認してください。

于 2012-10-07T05:04:26.593 に答える
0

たぶん、URLに2'/'の記号がありますか?「...server//api...」これは「...server/api...」のようにする必要があります

于 2012-10-07T06:08:13.327 に答える
0

DNS をフラッシュしてみてください。(Windows の場合: ipconfig /flushdns) または DNS プロバイダーを変更します。

于 2012-10-07T05:15:53.067 に答える