URLConnection不检索标头

时间:2012-02-17 15:12:49

标签: java matlab soap

我正在尝试在Matlab中使用Web服务,但我遇到了问题。

webservice发送一个用于matlab忽略的身份验证的cookie。 matlab函数callSoapService使用这个java代码:

url = URL(endpoint);
if isempty(proxy)
    httpConn = url.openConnection;
else
    httpConn = url.openConnection(proxy);
end
httpConn.setRequestProperty('Content-Type','text/xml; charset=utf-8');
httpConn.setRequestProperty('SOAPAction',soapAction);
httpConn.setRequestMethod('POST');
httpConn.setDoOutput(true);
httpConn.setDoInput(true);
outputStream = httpConn.getOutputStream;
outputStream.write(b);
outputStream.close;
inputStream = httpConn.getInputStream;
byteArrayOutputStream = java.io.ByteArrayOutputStream;
isc = InterruptibleStreamCopier.getInterruptibleStreamCopier;
isc.copyStream(inputStream,byteArrayOutputStream);
inputStream.close;
byteArrayOutputStream.close;
resp = byteArrayOutputStream.toString('UTF-8');

如果我写 httpConn.getHeaderFields(),它会返回一个空列表,而不是带有cookie的标题。任何的想法? 在java文档中,它说你应该调用httpConn.connect()而Matlab不会这样做,我在代码中的某个地方添加了该行只是为了尝试,但它没有工作lol

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

ASP.NET没有发送cookie,因为java用户代理的浏览器功能对象Mozilla / 5.0(Java 1.6.0_17; Windows 7 6.1 amd64; en_US)ICEbrowser / v6_0_2在Cookies字段中返回false。

我创建了一个新的java.browser文件并将其放在App_Browsers目录中。我重新部署了应用程序,它工作正常! ASP.Net将cookie发送给Matlab。

我接下来要做的就是修改Matlab Soap功能,以便每次都能接收并重新发送cookie。我在http://www.cadec-online.com/Help/API.aspx#Matlab

中发布了解决方案

我向matlab报告了这个问题:http://www.mathworks.com/support/service_requests/Service_Request_Detail.do?row_id=1-GQMEDO

http://msdn.microsoft.com/en-us/library/system.web.httpbrowsercapabilities.aspx