【问题标题】:Send File via Http Post通过 Http Post 发送文件
【发布时间】:2014-02-05 13:33:04
【问题描述】:

我正在尝试将文件从 Android 应用程序发送到 Asp.net 服务器。我尝试了各种例子。但每次我都失败了。从服务器端:

HttpFileCollection uploadFiles = Request.Files;
uploadFiles.Count;

总是返回 0。我拥有 Android 应用程序的必要权限。没有任何错误。这是Android应用代码:

    new Thread(new Runnable() {

            @Override
            public void run() {
                try {
                    String url = "http://www.xxxxxx.net/xxxxxx.aspx";


                    File fil = new File(Environment
                            .getExternalStorageDirectory(), "sample.txt");
                    if (fil.exists()) {
                        System.out.println("exists");
                    }
                    HttpClient httpclient = new DefaultHttpClient();

                    HttpPost httppost = new HttpPost(url);

                    InputStreamEntity reqEntity = new InputStreamEntity(
                            new FileInputStream(fil), -1);
                    reqEntity.setContentType("binary/octet-stream");
                    reqEntity.setChunked(true); // Send in multiple parts if
                                                // needed
                    httppost.setEntity(reqEntity);
                    HttpResponse response = httpclient.execute(httppost);

                    System.out.println("end");
                } catch (Exception e) {
                    System.out.println("asd: " + e.toString());
                }
            }
        }).start();

和服务器端:

 protected void Page_Load(object sender, EventArgs e)
    {

        using (StreamWriter _testData = new StreamWriter(Server.MapPath("~/data.txt"), true))
        {

            _testData.WriteLine("start");
            HttpFileCollection uploadFiles = Request.Files;
            _testData.WriteLine("file count: " + uploadFiles.Count);

        }
    }

【问题讨论】:

    标签: android asp.net http-post


    【解决方案1】:

    我尝试使用一个库,它成功了。我仍然不知道旧代码有什么问题。尽管如此,我还是使用了this library,它确实有效。以下是应用程序代码,以防有人需要:

    HttpClient httpClient = new DefaultHttpClient();
    
    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost("http://www.somesite.net/this.aspx");
    
    MultipartEntityBuilder builder = MultipartEntityBuilder.create();
    builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
    
    final File file = new File(MainActivity.this.getFilesDir().getPath() + "/sample.txt");
    FileBody fb = new FileBody(file);
    
    builder.addPart("file", fb);
    final HttpEntity yourEntity = builder.build();
    post.setEntity(yourEntity);
    httpClient.execute(post);
    

    我没有改变服务器端。

    【讨论】:

      猜你喜欢
      • 2011-08-15
      • 1970-01-01
      • 2010-11-11
      • 2015-05-24
      • 1970-01-01
      • 1970-01-01
      • 2011-10-24
      • 2014-03-12
      • 1970-01-01
      相关资源
      最近更新 更多