0

我编写了一个 Android 程序,通过 HTTP POST 将文件上传到服务器。

早些时候它工作正常,但我不知道为什么它现在不工作。我正在用我的 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-server 8.8.8.8 选项从命令行启动它(例如 emulator -avd my_android1.5 -dns-server 8.8.8.8)

ps 确保您没有意外删除清单文件中的互联网权限。此外,当您使用它时,请检查并确保该地址在您的 android 浏览器上有效。

于 2012-10-07T05:04:26.593 回答
0

尝试刷新 DNS。(在 Windows 中:ipconfig /flushdns)或更改 DNS 提供程序。

于 2012-10-07T05:15:53.067 回答
0

也许 url 中有一个 2'/' 符号?"...server//api..." 这一定是这样的 "...server/api..."

于 2012-10-07T06:08:13.327 回答