我正在尝试在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
答案 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