0
下記のコードを使用してAndroid(2.3.4)からファイルをアップロードしようとしています。パラメータも送信したい。WCFテンプレート付きのAndroid(2.3.4)からWCF 4.0 RESTサービスへのファイルのアップロード
public void uploadFile(File uploadFile) {
HttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost("http://192.168.0.102/application/services/sendfile/");
ResponseHandler<String> responseHandler = new BasicResponseHandler();
// Indicate that this information comes in parts (text and file)
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
try {
//Create a JSON object to be used in the StringBody
JSONObject jsonObj = new JSONObject();
//Add some values
jsonObj.put("filename", uploadFile.getName());
//Add the JSON "part"
reqEntity.addPart("entity", new StringBody(jsonObj.toString()));
}
catch (JSONException e) {
Log.v("App", e.getMessage());
}
catch (UnsupportedEncodingException e) {
Log.v("App", e.getMessage());
}
FileBody fileBody = new FileBody(uploadFile);//, "application/octet-stream");
reqEntity.addPart("file", fileBody);
try {
postRequest.setEntity(reqEntity);
//Execute the request "POST"
HttpResponse httpResp = httpClient.execute(postRequest);
//Check the status code, in this case "created"
if(((HttpResponse) response).getStatusLine().getStatusCode() == HttpStatus.SC_CREATED){
Log.v("App","Created");
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
それは常に不正な要求を取得だ:これは私のAndroidのコードです。
[WebInvoke(
Method = "POST",
UriTemplate = "sendFile",
BodyStyle = WebMessageBodyStyle.Wrapped)]
public int sendFile(Stream receivedFile)
{
// How should I process the multipart file here to save it with its name on disk?
}
私は私のglobal.asax
で<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</modules>
<directoryBrowse enabled="false" />
</system.webServer>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<standardEndpoints>
<webHttpEndpoint>
<!--
Configure the WCF REST service base address via the global.asax.cs file and the default endpoint
via the attributes on the <standardEndpoint> element below
-->
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" />
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
と、この私のweb.configファイルでこれを持っている:私は、WCF RESTサービスは、テンプレート40を使用して作られている他の側では
private void RegisterRoutes()
{
RouteTable.Routes.Add(new ServiceRoute("Service", new WebServiceHostFactory(), typeof(AccidentService)));
}
私はブレークポイントを置く場合、WCFがファイルを受信しない理由は何ですか?
Android(2.3.4)からWCF 4.0にファイルを送信する方が良い例があれば、本当に感謝します。
ありがとうございます!ギレルモ。
あなたの変更を私たちにお知らせください。ありがとう。 – VansFannel
-1 "変更されたため変更されました"が欠落しています。 – AD7six