0
我想从Android(2.3.4)使用下面的代码上传文件,我知道我必须使用多部分后,如果我也想发送参数。这是我的Android代码:上传文件从Android(2.3.4)到WCF 4.0 REST服务与WCF模板40
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();
}
}
它总是检索错误的请求。
在另一边,我在使用模板40 WCF REST服务提出:
[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?
}
我在我的web.config
<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>
有这样的,这在我的Global.asax
private void RegisterRoutes()
{
RouteTable.Routes.Add(new ServiceRoute("Service", new WebServiceHostFactory(), typeof(AccidentService)));
}
任何想法为什么WCF没有收到文件,如果我把一个断点?
如果任何人有更好的例子来说明如何从Android(2.3.4)发送文件到WCF 4.0将非常感激。
在此先感谢!吉列尔莫。
您可以与我们分享您的更改吗?谢谢。 – VansFannel 2012-05-29 06:24:40
-1因为“改变他们使它工作”缺少_how_他们被改变。 – AD7six 2014-03-01 18:58:29