高分求助!通过WSDL创建SOAP web服务程序。链接到网站是http时,一切都很顺利,但是改为 https 就开始出错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高分求助!通过WSDL创建SOAP web服务程序。链接到网站是http时,一切都很顺利,但是改为 https 就开始出错相关的知识,希望对你有一定的参考价值。

是在 centOS 下编译的,编译命令为:
wsdl2h -o myhead.h https://IP省略/soap/Service.php?wsdl

报错:
** The gSOAP WSDL/Schema processor for C and C++, wsdl2h release 2.8.9
** Copyright (C) 2000-2012 Robert van Engelen, Genivia Inc.
** All Rights Reserved. This product is provided "as is", without any warranty.
** The wsdl2h tool is released under one of the following two licenses:
** GPL or the commercial license by Genivia Inc. Use option -l for details.
Saving ./stock/stock.h
Reading type definitions from type map file 'typemap.dat'
Cannot connect to https site: no SSL support, please rebuild wsdl2h with SSL or download the files and rerun wsdl2h
-------------------------------------------------------
网上和gsoap官方文档上说要 安装 openssl 然后使用 make secure 重新生成wsdl2h,这些都做成了,但是还是那个错误。我已经没辙了,哪位大虾做过类似的东东,还望不吝赐教。

参考技术A 不知道你说你做的什么,不过根据提示

Cannot connect to https site: no SSL support, please rebuild wsdl2h with SSL or download the files and rerun wsdl2h

说明,无法连接https站点,不支持ssl,请重新生成带有ssl的wsdl2h或者重新下载wsdl2h

WSDL 的 SalesForce Web 服务 - 无效的登录 SOAP 错误

【中文标题】WSDL 的 SalesForce Web 服务 - 无效的登录 SOAP 错误【英文标题】:SalesForce Web Service By WSDL - Invalid Login SOAP Error 【发布时间】:2011-09-15 14:24:59 【问题描述】:

我正在尝试连接到 SalesForce Web 服务并在网页中返回一些数据。我是这个 WSDL 的新手。所以首先我创建了一个非常简单的控制台应用程序。我只是想看看我是否可以连接到网络服务。那工作得很好。我能够看到我们的表格并返回数据。

接下来我在http://www.developer.com/net/net/salesforce-integration-with-.net-web-services-soap-api-.html 使用了EXCELLENT 示例代码。将我的 web.config 设置更改为我的等。但是,我不断收到以下 SOAP 错误。

抛出:“INVALID_LOGIN:用户名、密码、安全令牌无效;或用户被锁定。” (System.Web.Services.Protocols.SoapException) 异常消息 = "INVALID_LOGIN: 用户名、密码、安全令牌无效;或用户被锁定。",异常类型 = "System.Web.Services.Protocols.SoapException"

调试数据显示正在发送正确的登录凭据。它们与控制台应用程序成功传递的凭据相同。

任何帮助将非常非常非常感谢!!!!或者如果有人有另一个代码示例,我也对此持开放态度......

【问题讨论】:

控制台应用还能用吗?想来想去,可能是你写了控制台应用,账号就被锁了。 【参考方案1】:

通过 API 登录(即不通过网络应用)时,有一些额外的安全措施。

您需要:

从受信任的 IP 地址连接(在您的用户个人资料中受信任(请参阅个人资料详细信息页面)或通常在组织中(“安全控制 --> 网络访问”)进行连接

将您的安全令牌附加到您的密码(从“我的个人信息 --> 重置安全令牌”中重置它)

【讨论】:

【参考方案2】:

如果您使用的是新的 API(例如 26.0),那么登录方法需要一个 LoginScopeHeader 参数。调用 Visual Studio 生成的soap代理时,您需要调用login() 传递null 作为LoginScopeHeader 的参数:

SoapClient client = new SoapClient();

string username = "user@salesforce.com";
string password = "password";
string securityToken = "xxxxxxxxxxxxxxxxxxxxxxxxx";

LoginResult loginResult = client.login(null, username, password + securityToken);

当然,您需要确保您有API enabled 设置(在配置文件中)

【讨论】:

以上是关于高分求助!通过WSDL创建SOAP web服务程序。链接到网站是http时,一切都很顺利,但是改为 https 就开始出错的主要内容,如果未能解决你的问题,请参考以下文章

WSDL 的 SalesForce Web 服务 - 无效的登录 SOAP 错误

任何应用程序都可拥有 Web Service 组件。

WSDL 能否指示 Web 服务的 SOAP 版本(1.1 或 1.2)?

如何根据wsdl获取SOAP内容

web service接口 wsdl和asmx有啥区别

向 wsdl2java 生成的代码添加soap头认证