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."