C# 调用soapweb服务的转换
首先,我为这个问题道歉。让我先写一写,我已经尝试了下面的代码,用C# 调用soapweb服务的转换,c#,asp.net,vb.net,C#,Asp.net,Vb.net,首先,我为这个问题道歉。让我先写一写,我已经尝试了下面的代码,用C调用了SOAPweb服务,效果非常好。现在我被代码转换成VB.NET: public void CallService(string username, string password) { HttpWebRequest request = CreateSOAPWebRequest(); XmlDocument SOAPReqBody = new XmlDocument(); SOAPReqBody.Lo
C
调用了SOAP
web服务,效果非常好。现在我被代码转换成VB.NET
:
public void CallService(string username, string password)
{
HttpWebRequest request = CreateSOAPWebRequest();
XmlDocument SOAPReqBody = new XmlDocument();
SOAPReqBody.LoadXml(@"<?xml version=""1.0"" encoding=""utf-8""?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/"">
<SOAP-ENV:Header>
<wsse:Security xmlns:wsse=""http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"">
<wsse:UsernameToken>
<wsse:Username>" + username + @"</wsse:Username>
<wsse:Password>" + password + @"</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<OTA_PingRQ xmlns=""http://www.opentravel.org/OTA/2003/05"" EchoToken=""abc123"" TimeStamp=""2016-07-12T10:00:29.0Z"" Version=""1"">
<EchoData> Hello World </EchoData>
</OTA_PingRQ>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>");
using (Stream stream = request.GetRequestStream())
{
SOAPReqBody.Save(stream);
}
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
using (WebResponse Serviceres = request.GetResponse())
{
using (StreamReader rd = new StreamReader(Serviceres.GetResponseStream()))
{
var ServiceResult = rd.ReadToEnd();
lblMsg.Text = ServiceResult;
}
}
}
public HttpWebRequest CreateSOAPWebRequest()
{
HttpWebRequest Req = (HttpWebRequest)WebRequest.Create(@"https://cmtpi.siteminder.com/pmsxchangev2/services/CITRUS");
Req.Headers.Add(@"SOAP:Action");
Req.ContentType = "text/xml;charset=\"utf-8\"";
Req.Accept = "text/xml";
Req.Method = "POST";
return Req;
}
在vb中使用带$的字符串插值,就像在c中使用@一样#
Dim str=$”
“+用户名+$”
“+密码+$”
你好,世界
"
在vb中使用带$的字符串插值,就像在c中使用@一样#
Dim str=$”
“+用户名+$”
“+密码+$”
你好,世界
"
VB代码的一个问题是,您需要使用下划线字符和连接运算符(&)指示字符串文字何时超过一行。例如:
exampleliteral = _
"First few words of sentence that is longer than one line, " _
& "more words on second line, " _
& "end of sentence."
VB代码的一个问题是,您需要使用下划线字符和连接运算符(&)指示字符串文字何时超过一行。例如:
exampleliteral = _
"First few words of sentence that is longer than one line, " _
& "more words on second line, " _
& "end of sentence."
您可以使用工具自动转换大部分代码,有很多可用的,但有几个示例是或 您可能会发现它在多行分割字符串上有点阻塞。然而,这并不难解决。除了使用
&
而不是+
进行连接之外,VB.NET和C#中字符串的声明方式没有太大区别。您可能需要使用在多行文本之间连接。如果有进一步的问题,您可以在语言文档中轻松地查找所有这些语法
注意:在手动尝试中,使用VB的导入
代替C#的使用
是不正确的。VB中的直接等价物就是使用
。有关VB.NET中两个关键字的详细信息,请参见和。您可以使用工具自动转换大部分代码,有很多可用的,但有几个示例是或
您可能会发现它在多行分割字符串上有点阻塞。然而,这并不难解决。除了使用&
而不是+
进行连接之外,VB.NET和C#中字符串的声明方式没有太大区别。您可能需要使用在多行文本之间连接。如果有进一步的问题,您可以在语言文档中轻松地查找所有这些语法
注意:在手动尝试中,使用VB的导入
代替C#的使用
是不正确的。VB中的直接等价物就是使用
。有关VB.NET中两个关键字的详细信息,请参见和。您是否尝试使用诸如或之类的工具?我尝试了另一个,但失败了。上面的方法行吗?为什么不试试呢,只需要几秒钟?顺便问一下,你是从哪里想到的,在VB.NET中,C#的使用
的等价物是Import
或Imports
?AFAIK等价物是使用,这两个函数都已转换。除了使用&而不是+进行串联,vb和c#中字符串的声明方式没有太大区别。您可能需要使用&\在多行代码之间连接。您可以很容易地在语言文档中查找所有这些语法。您是否尝试过使用诸如或之类的工具?我尝试过使用另一个工具,但失败了。上面的方法行吗?为什么不试试呢,只需要几秒钟?顺便问一下,你是从哪里想到的,在VB.NET中,C#的使用
的等价物是Import
或Imports
?AFAIK等价物是使用,这两个函数都已转换。除了使用&而不是+进行串联,vb和c#中字符串的声明方式没有太大区别。您可能需要使用&\在多行代码之间连接。您可以在语言文档中轻松地查找所有这些语法
exampleliteral = _
"First few words of sentence that is longer than one line, " _
& "more words on second line, " _
& "end of sentence."