【发布时间】:2014-11-27 14:09:11
【问题描述】:
我正在尝试在脚本任务的入口点方法中编写以下代码来调用基于 Java 的 Web 服务方法。如果我从控制台应用程序调用,但在从 SSIS 控制流调用时,以下代码会正确执行,直到消息框 1 它会正确执行,但在执行 webRequest.GetResponse() 时会发生什么不知道它既不给出错误也不执行下一行代码.
public void Main()
{
string envelopeContent = GetSoapEvvelope();
XmlDocument soapEnvelopeXml = new XmlDocument();
soapEnvelopeXml.LoadXml(envelopeContent);
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(_url);
webRequest.Method = "POST"; // get executed
soapEnvelopeXml.Save(webRequest.GetRequestStream());
MessageBox.Show("1");
WebResponse response = webRequest.GetResponse();
MessageBox.Show("2"); // does not get executed
string responseString = string.Empty;
using (var reader = new StreamReader(response.GetResponseStream()))
{
responseString = reader.ReadToEnd();
}
XmlDocument doc = new XmlDocument();
doc.LoadXml(responseString);
XmlNode node = doc.SelectSingleNode("//*[local-name()='result']");
}
请指导我该怎么做?根据我的理解,Web 服务任务需要 WSDL/代理。有没有其他方法可以在请求中调用传递soap信封的java基础Web服务?
谢谢
@保罗
【问题讨论】:
-
你能检查接收请求的网络服务器,看看它是否被调用?您是否在 BIDS 中以交互方式运行此操作,而您只看到一个消息框 1 而没有更多? Java 部分应该无关紧要,它只是一个 Web 服务。
-
是的,我从 BIDS 运行它,我只能看到消息框 1。根据提琴手服务器获取请求。 Fiddler 信息如下 - 所选会话是 HTTP CONNECT 隧道。此隧道使客户端能够通过 HTTP 代理服务器(如 Fiddler)发送原始流量(例如 HTTPS 加密的流或 WebSocket 消息)。请求计数:1 发送字节:97(标头:97;正文:0) 接收字节:107(标头:107;正文:0)
标签: sql-server web-services ssis etl script-task