2011-12-23 74 views
1

我需要使用WCF rest服務發送一個字節的arrray文件。我必須在Android中使用HttpPost方法發送數據。我使用的代碼給出的狀態爲HTTP/1.1 400錯誤請求錯誤。Android將文件作爲ByteArray上傳到WCF REST服務

private final static String URI = "http://192.168.1.15/QueryService/Import/Test"; 
     final HttpPost request = new HttpPost(URI); 
      final HttpClient httpClient = new DefaultHttpClient(); 
      final ByteArrayEntity entity = new ByteArrayEntity(fileToBytes(pathToOurFile)); 
      entity.setContentType("application/octet-stream"); 
      entity.setChunked(true); 
      request.setEntity(entity); 
      final HttpResponse hr = httpClient.execute(request); 
      final StatusLine status = hr.getStatusLine(); 
     httpClient.getConnectionManager().shutdown(); 

回答

1

很難說出你的要求有什麼問題。解決這種錯誤的標準方法是:

  • 爲您的服務創建一個WCF客戶端。驗證它是否按預期工作。
  • 使用Fiddler或其他合適的工具來攔截客戶端生成的HTTP請求。標題和正文都很重要。
  • 修改您的Android請求以生成與WCF客戶端完全相同的請求。
+0

我使用Fiddler,但它沒有顯示我的應用程序提出的http請求。我也將模擬器代理更改爲fiddler ip地址。當我通過模擬器瀏覽任何網站時,它會顯示在提琴手中,但它不會在提琴手中顯示我的應用程序請求。對於StringEntity也是相同的代碼工作,但不會在Fiddler中顯示任何進程。 – saini 2011-12-23 10:49:04

+0

這聽起來像是一個模擬器問題。您可以使用中間客戶端輕鬆攔截請求。過去,我已成功使用過http://code.google.com/p/tcpmon/。 – kgiannakakis 2011-12-23 11:06:55

+0

我可以將請求發送到服務,但似乎我發送的請求不是我必須通過Web服務接收的正確格式。另外我嘗試通過multipartentity以流格式發送數據,但沒有得到任何響應。 – saini 2011-12-30 08:22:32

0

我也面臨着與WCF服務相同的問題。 400錯誤的請求意味着您傳遞給方法的請求參數值與方法的參數不匹配。我已經使用Base64字符串編碼來傳遞文件作爲方法參數。願它能幫助你。