2013-05-13 92 views
0

我对web服务/ api调用相当陌生创建我的第一个肥皂请求

我已经获得了用于开发的wsdl。

http://bogus.com/SM/7/ServiceCatalogAPI.wsdl

我使用Visual Studio 2010 C#.NET 4.0

我已经拥有一个用户名/密码(基本认证)

我增加了一个服务参考WSDL寻找如何做请求的指导。我在正确的道路上吗?

我有以下的,但我收到“无法隐式转换类型 '字符串' 到 'SM9.ServiceReference1.StringType'

protected void Button1_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     ServiceReference1.CreateCartRequest createCart = new ServiceReference1.CreateCartRequest(); 

     string result = createCart.model.instance.BriefDescription = "Testing SM9"; 

     Label1.Text = result.ToString(); 
    } 
    catch (System.Exception ex) 
    { 
     Label1.Text = ex.Message; 
    } 
} 

SOAP请求

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:ns="http://schemas.hp.com/SM/7" xmlns:cmn="http://schemas.hp.com/SM/7/Common"> 
    <soap:Body> 
    <ns:CreateCartRequest> 
     <ns:model> 
     <ns:keys/> 
     <ns:instance> 
      <ns:BriefDescription type="">Brief Description</ns:BriefDescription> 
      <ns:Description type=""> 
      <ns:Description type="">description 1</ns:Description> 
      <ns:Description type="">description 2</ns:Description> 
      </ns:Description> 
     </ns:instance> 
     </ns:model> 
    </ns:CreateCartRequest> 
    </soap:Body> 
</soap:Envelope> 

SOAP回应

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP-ENV:Body> 
    <CreateCartResponse message="Success" returnCode="0" schemaRevisionDate="2012-09-12" schemaRevisionLevel="0" status="SUCCESS" xmlns="http://schemas.hp.com/SM/7" xmlns:cmn="http://schemas.hp.com/SM/7/Common" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.hp.com/SM/7 http://SE104636.devfg.RBC.com:12700/SM/7/Cart.xsd"> 
     <model> 
     <keys> 
      <CartID type="Decimal">11</CartID> 
     </keys> 
     <instance recordid="11" uniquequery="cartId=11"> 
      <CartID type="Decimal">11</CartID> 
      <Completed type="Boolean">false</Completed> 
      <BriefDescription type="String">Brief Description</BriefDescription> 
      <Owner type="String">SOAP USER</Owner> 
      <Description type="Array"> 
      <Description type="String">description 1</Description> 
      <Description type="String">description 2</Description> 
      </Description> 
      <Cost type="Decimal">0</Cost> 
     </instance> 
     </model> 
     <messages> 
     <cmn:message>svcCart record added.</cmn:message> 
     </messages> 
    </CreateCartResponse> 
    </SOAP-ENV:Body> 
+0

我没有看到任何实际的Web服务调用,你从哪里得到你的回应? – Hanno 2013-05-14 07:27:43

+0

嗨Hanno,请求和响应包含在文档中。我想弄清楚如何让我的第一个电话。 – user2379544 2013-05-14 12:28:38

回答

0

它看起来像BriefDescription不是字符串类型。尝试是这样的:

string result = createCart.model.instance.BriefDescription = new StringType("Testing SM9"); 

string result = createCart.model.instance.BriefDescription = new StringType() { Value = "Testing SM9" }; 

(对不起,我不知道是什么属性 “StringType” 实际上有)。

+0

嗨Appclay,谢谢你的回应。我想你这两个例子provided.Error “SM9.ServiceReference1.StringType”不包含一个构造函数1个参数\t 错误无法隐式转换类型“SM9.ServiceReference1.StringType”到“字符串” – user2379544 2013-05-14 12:31:10

+0

的错误告诉你,你正试图将类型为“SM9.ServiceReference1.StringType”的东西设置为“string”类型的东西。我只是用我的答案猜测,因为我没有你的代码来测试它。 – joshuahealy 2013-05-15 05:31:14