【问题标题】:How do I call SalesForce SOAP methods via a stand alone SOAP client如何通过独立的 SOAP 客户端调用 SalesForce SOAP 方法
【发布时间】:2015-04-03 16:34:09
【问题描述】:

我可以使用步骤here 致电销售团队。但是,当我尝试使用独立 Web 客户端 like this one 拨打电话时出现错误。错误如下。提供给 login() 的用户名和(密码+令牌)是有效的。

我不确定为什么我不能从独立的 SOAP 客户端调用 SOAP 方法。我相信我应该可以。我是否必须始终使用 Force-wsc 连接到 SalesForce?

请求:

<?xml version="1.0" encoding="utf-16"?>
<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">
  <soap:Body>
    <login xmlns="urn:enterprise.soap.sforce.com">
      <username>MY_USERNAME</username>
      <password>PASSWORD+TOKEN</password>
    </login>
  </soap:Body>
</soap:Envelope>

回应

ResponseCode: 500 (Server Error)
Transfer-Encoding:chunked
Content-Type:text/xml;charset=UTF-8
Date:Fri, 03 Apr 2015 16:25:47 GMT
Expires:Thu, 01 Jan 1970 00:00:00 GMT
Set-Cookie:BrowserId=KUXkegaIQ_aJnfVrQEeC-A;Path=/;Domain=.salesforce.com;Expires=Tue, 02-Jun-2015 16:25:47 GMT

<?xml version="1.0" encoding="utf-16"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sf="urn:fault.enterprise.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <soapenv:Fault>
      <faultcode>INVALID_LOGIN</faultcode>
      <faultstring>INVALID_LOGIN: Invalid username, password, security token; or user locked out.</faultstring>
      <detail>
        <sf:LoginFault xsi:type="sf:LoginFault">
          <sf:exceptionCode>INVALID_LOGIN</sf:exceptionCode>
          <sf:exceptionMessage>Invalid username, password, security token; or user locked out.</sf:exceptionMessage>
        </sf:LoginFault>
      </detail>
    </soapenv:Fault>
  </soapenv:Body>
</soapenv:Envelope>

控制台错误:

    ************** Exception Text **************
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Web.Services.Protocols.SoapException: INVALID_LOGIN: Invalid username, password, security token; or user locked out.
   at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   at SforceService.login(String username, String password)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at WebServiceStudio.MainForm.InvokeWebMethod()

客户端截图:

【问题讨论】:

    标签: web-services soap salesforce soapui soap-client


    【解决方案1】:

    连接器使用的是会话标头而不是用户名和密码,因此您可以生成 SF 会话并在独立客户端设置中输入标头。 看这里的第 105 行 https://github.com/forcedotcom/wsc/blob/master/src/main/java/com/sforce/ws/transport/SoapConnection.java

                    SessionRenewer.SessionRenewalHeader sessionHeader = config.getSessionRenewer().renewSession(config);
                    if (sessionHeader != null) {
                        addHeader(sessionHeader.name, sessionHeader.headerElement);
                    }
    

    【讨论】:

      【解决方案2】:

      我唯一能想到的可能是您将呼叫发送到错误的网址?它是测试组织还是生产组织?

      【讨论】:

        【解决方案3】:

        您的 xml 请求很好。只需检查端点(如果您使用的是生产 wsdl,请使用生产凭证,沙箱也一样 - 或者只是更改服务的端点 - )。如果您使用代理,我建议您查看您的 .Net webservice studio 设置以在那里设置代理设置。

        希望对你有帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-12-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多