0

オーディオを取得して何らかの操作を行い、最終的に文字列を返す Web サービスがあります。この Web サービスには、このような Web ページがあります。

<form name="form1" method="post" action="Default.aspx" id="form1" enctype="multipart/form-data">

<input type="file" name="FileUpload3" id="FileUpload3" style="width:325px;" />
<input type="submit" name="Button6" value="Upload File" id="Button6" />   
<span id="Label1"></span>

</form>

ファイルをアップロードファイル3に選択してアップロードファイルを押すと、同じページがリロードされ、スパンラベルに文字列が表示されます。AndroidでこのWebサービスに接続したいので、以下のコードでファイルを接続してアップロードしようとしましたが、サーバー応答200コードですがサーバーにファイルがアップロードされず、文字列が表示されません。サーバーがファイルを選択せず​​にファイルをアップロードしているようです。どうすればよいですか? 助けてください。

public void upLoad2Server() throws ClientProtocolException, IOException {

    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://11.12.13.174/file_transfer_sample/ClientWebSite/Default.aspx");

    File file = new File(Environment.getExternalStorageDirectory().getPath() + "/test.wav");
    ContentBody cbFile = new FileBody(file, "audio/wav"); 
    MultipartEntity reqEntity = new MultipartEntity();
    reqEntity.addPart("FileUpload3", cbFile);
    httppost.setEntity(reqEntity);  
    HttpResponse response = httpclient.execute(httppost);
    Log.i("status", String.valueOf(response.getStatusLine()));
}
4

2 に答える 2

0

このコードを確認してください。ファイルを .NET httphandler サーバーにアップロードします。SSL 自己署名セキュリティを使用しますが、メソッドとマルチパート エンティティの使用方法の例です。わたしにはできる。

public static void main(String[] args) throws IOException {
    try {
         File f = new File(
                "c:\\eula.1028.txt");

         System.out.println("LENGTH " + f.length());        
         PostMethod method = new PostMethod("/Handler");            
         FilePart filePart = new FilePart("file",f);
         filePart.setContentType("application/pdf");
         Part[] parts = {filePart};
         MultipartRequestEntity request = new
         MultipartRequestEntity(parts, method.getParams());
         method.setRequestEntity(request);

        Protocol easyhttps = new Protocol("https",
                new EasySSLProtocolSocketFactory(), 2000);
        org.apache.commons.httpclient.HttpClient client = new org.apache.commons.httpclient.HttpClient();
        client.getHostConfiguration().setHost("localhost", 2000, easyhttps);

        client.executeMethod(method);
        String s = method.getResponseBodyAsString();
        System.out.println(s);
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }
}
于 2013-11-05T13:19:14.003 に答える