C# C使用带有web API的Java web服务(没有可用的WSDL)

C# C使用带有web API的Java web服务(没有可用的WSDL),c#,web-services,asp.net-web-api,mime,C#,Web Services,Asp.net Web Api,Mime,我需要创建一个使用Java1.4Web服务的c应用程序。这个web服务没有WSDL,也没有,我不能让他们创建一个,我必须使用这个服务 返回的内容类型为内容类型:具有任意边界的多部分/表单数据。fiddler的内容如下所示: HTTP/1.0 200 OK Content-Type: multipart/form-data; boundary=---------------------------MultiPartFormControl7d2fb2f20039a Servlet-Engine:

我需要创建一个使用Java1.4Web服务的c应用程序。这个web服务没有WSDL,也没有,我不能让他们创建一个,我必须使用这个服务

返回的内容类型为内容类型:具有任意边界的多部分/表单数据。fiddler的内容如下所示:

HTTP/1.0 200 OK
Content-Type: multipart/form-data; boundary=---------------------------MultiPartFormControl7d2fb2f20039a

Servlet-Engine: Tomcat Web Server/3.2.3 (JSP 1.1; Servlet 2.2; Java 1.4.2_11; Linux 2.6.18-371.8.1.el5 i386; java.vendor=Sun Microsystems Inc.)

-----------------------------MultiPartFormControl7d2fb2f20039a
Content-Disposition: form-data; name="806307234.xml" filename="806307234.xml"
Content-Type: application/octet-stream

<*XML contents go here*>    
-----------------------------MultiPartFormControl7d2fb2f20039a
Content-Disposition: form-data; name="806307873.jpg" filename="806307873.jpg"
Content-Type: image/jpeg

<*binary data goes here*>    
-----------------------------MultiPartFormControl7d2fb2f20039a
Content-Disposition: form-data; name="806307876.jpg" filename="806307876.jpg"
Content-Type: image/jpeg

<*binary data goes her**>    
-----------------------------MultiPartFormControl7d2fb2f20039a
尝试使用.ReadAsMultipartAsync时,我在尝试将结果返回到MultipartMemoryStreamProvider时遇到以下错误:

以下是我的代码片段:

Uri webServiceUri = new Uri(@"http://endpoint");

string document = @"Contains XML for SOAP call";

HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Post, webServiceUri);
HttpContent stringContent = new StringContent(document, Encoding.UTF8, "text/xml");
requestMessage.Content = stringContent;

HttpClient client = new HttpClient();
Task<HttpResponseMessage> httpRequest = client.SendAsync(requestMessage,
HttpCompletionOption.ResponseHeadersRead, CancellationToken.None);

HttpResponseMessage httpResponse = httpRequest.Result;
HttpContent returnContent = httpResponse.Content;

Task<MultipartMemoryStreamProvider> multiPartTask = returnContent.ReadAsMultipartAsync();
MultipartMemoryStreamProvider mpmsProvider = multiPartTask.Result; <*** ERROR OCCURS HERE ***>

Stream multipartStream = mpmsProvider.GetStream(returnContent, returnContent.Headers);

您应该首先将浏览器指向服务,看看是否可以首先在浏览器上查看wsdl

此外,此服务托管在哪个应用程序服务器下?公猫JBoss?例如,如果是tomcat,则在logs文件夹下失败catalina.out,并查看服务是否正确加载

这里有一篇文章展示了如何在Tomcat/linux上设置Java ws,并使用C中的Java ws,特别是对于不熟悉linux的dotnet开发人员:


您正在使用两个扩展名为.jpg的图像,并且您正在使用的内容类型为image/jpeg。基于此,MIME类型image/jpg和image/jpeg是不同的。因此,您可能希望尝试将图像的内容类型更改为image/jpg,如下所示:


抱歉,我想这就是你的问题所在。基于文件名、完全相同的字节数失败以及代码中的一些其他命中,我很确定你和我使用的是相同的服务:我在无数其他服务中遇到了相同的问题:/
Content-Type: multipart/form-data; boundary=---------------------------MultiPartFormControl7d2fb2f20039a

Servlet-Engine: Tomcat Web Server/3.2.3 (JSP 1.1; Servlet 2.2; Java 1.4.2_11; Linux 2.6.18-371.8.1.el5 i386; java.vendor=Sun Microsystems Inc.)

-----------------------------MultiPartFormControl7d2fb2f20039a
Content-Disposition: form-data; name="806307234.xml" filename="806307234.xml"
Content-Type: application/octet-stream

<*XML contents go here*>    
-----------------------------MultiPartFormControl7d2fb2f20039a
Content-Disposition: form-data; name="806307873.jpg" filename="806307873.jpg"
Content-Type: image/jpg

<*binary data goes here*>    
-----------------------------MultiPartFormControl7d2fb2f20039a
Content-Disposition: form-data; name="806307876.jpg" filename="806307876.jpg"
Content-Type: image/jpg

<*binary data goes her**>    
-----------------------------MultiPartFormControl7d2fb2f20039a