在使用.NET WCF Web服务时,我得到以下响应(错误):
不支持的HTTP响应状态415无法处理消息,因为内容类型为'text/xml; charset = UTF-8'不是预期的类型'application/soap + xml; 字符集= UTF-8' .
如何更改内容类型?我在NuSOAP论坛/文档中找不到它,或者我可能会忽略某些东西....
我有NuSOAP网络服务器:...
$server->register('getMembersEvents',
array('date' => 'xsd:string'),
array('Events' => 'tns:Events'),
'urn:my',
false,
'rpc',
false,
'Description'
);
$server->wsdl->addComplexType(
'Events',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array('Event' =>array ('name' => 'Event', 'type' => 'tns:Event')),
array(
'Event' => array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:Event[]')
),
'tns:Event'
);
$server->wsdl->addComplexType(
'Event',
'complexType',
'struct',
'all',
'',
array(
'field1' => array('name' => 'MemberNumber', 'type' => 'xsd:int'),
// ...
'fieldN' => array('name' => 'WebMemberID', 'type' => 'xsd:int')
)
);
Run Code Online (Sandbox Code Playgroud)
一切正常,但响应似乎是:
<SOAP-ENV:Body>
<ns1:getMembersEventsResponse xmlns:ns1="urn:eliza">
<Events xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:Event[2]">
<item xsi:type="tns:Event">
<field1 xsi:type="xsd:int">123</field1>
...
<fieldN xsi:type="xsd:int">123</fieldN>
</item>
<item xsi:type="tns:Event">
<field1 …Run Code Online (Sandbox Code Playgroud) 我正在使用NuSOAP与第三方API进行交互,包括运行数据库查询和检索结果.它运行得非常可靠,但我遇到了一个特定查询的问题.NuSOAP生成错误而不是返回结果: XML error parsing SOAP payload on line 2: Invalid character
事实证明,结果集包含以下内容: Léa Lincoln.当我手动将重音字符更改为"常规"字符时,查询工作正常,没有来自NuSOAP的错误.
所以,我的问题是如何处理这个问题.我无法控制来自数据库的数据,我需要NuSOAP不要抛出错误并在每次出现非标准字符时停止.谢谢.--Jeff
我有一个简单的nuSoap XML响应:
<?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">
<soap:Body>
<LoginResult xmlns="http://Siddin.ServiceContracts/2006/09">FE99E5267950B241F96C96DC492ACAC542F67A55</LoginResult>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
现在,我试图与解析它simplexml_load_string的建议在这里:解析用SimpleXML的XML具有多个命名空间,在这里:故障使用SimpleXML解析PHP中的SOAP响应,但我无法得到它的工作.
这是我的代码:
$xml = simplexml_load_string( $this->getFullResponse() );
$xml->registerXPathNamespace('soap', 'http://schemas.xmlsoap.org/soap/envelope/');
$xml->registerXPathNamespace('xsi', 'http://www.w3.org/2001/XMLSchema-instance');
$xml->registerXPathNamespace('xsd', 'http://www.w3.org/2001/XMLSchema');
foreach($xml->xpath('//soap:Body') as $header) {
var_export($header->xpath('//LoginResult'));
}
Run Code Online (Sandbox Code Playgroud)
但我仍然得到结果:
/* array ( )
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?或者我想知道什么简单的事情?
使用DOM的MySqlError工作结果:
$doc = new DOMDocument();
$doc->loadXML( $response );
echo $doc->getElementsByTagName( "LoginResult" )->item(0)->nodeValue;
Run Code Online (Sandbox Code Playgroud)
使用SimpleXML by ndm的工作结果:
$xml = simplexml_load_string( $response );
foreach($xml->xpath('//soap:Body') as $header) {
echo (string)$header->LoginResult;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试调用我创建的Web服务,但服务器返回以下错误:
致命错误:未捕获的SoapFault异常:[WSDL] SOAP-ERROR:解析WSDL:无法从" http://www.savepoints.com.br/server.php?WSDL " 加载:标记html行中的数据过早结束2 in /home/storage/a/39/1c/site1365816459/public_html/cliente.php:5堆栈追踪:#0 /home/storage/a/39/1c/site1365816459/public_html/cliente.php(5):SoapClient - > 第5行/home/storage/a/39/1c/site1365816459/public_html/cliente.php中的SoapClient(' http://www.save ...')#1 {main}
在这里,我展示了两个脚本:
server.php(它是WSDL服务器)
<?php
require('classes/nusoap/nusoap.php');
$server = new soap_server();
$server->configureWSDL('stockserver', 'urn:stockquote');
$server->register('getStockQuote',
array('symbol' => 'xsd:string'),
array('return' => 'xsd:decimal'),
'urn:stockquote',
'urn:stockquote#getStockQuote');
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?>
Run Code Online (Sandbox Code Playgroud)
cliente.php
<?php
require('classes/nusoap/nusoap.php');
$c = new SoapClient('http://www.savepoints.com.br/server.php?WSDL');
$stockprice = $c->call('getStockQuote',array('symbol' => 'ABC'));
echo "The stock price for 'ABC' is ".$stockprice.".";
?>
Run Code Online (Sandbox Code Playgroud) 我正在使用nosoap在PHP中开发一个Web服务.这是我的文件,webservice.php
<?php
require_once "nusoap/nusoap.php";
$namespace = "urn:mywsdl";
$server = new soap_server();
$server->configureWSDL('myWS', $namespace);
$server->wsdl->schemaTargetNamespace = $namespace;
$server->wsdl->addComplexType('datosBasicos', 'complexType', 'struct', 'all', '', array(
'codigo' => array(
'name' => 'codigo',
'type' => 'xsd:string'
),
'nombre' => array(
'name' => 'nombre',
'type' => 'xsd:string'
)
));
$server->wsdl->addComplexType('arraydatosBasicos', 'complexType', 'array', '', 'SOAP-ENC:Array', array(), array(
array('ref' => 'SOAP-ENC:arrayType',
'wsdl:arrayType' => 'tns:datosBasicos[]')
), 'tns:datosBasicos'
);
$server->register('saludar', array('nombre' => 'xsd:string'), array('return' => 'tns:arraydatosBasicos'), $namespace);
function saludar($nombre) {
$array[] = array('codigo' => '123', 'nombre' => 'test');
$array[] = …Run Code Online (Sandbox Code Playgroud) 我在php中编写soap服务器和soap客户端.对于soap服务的身份验证,我想使用"usernametoken"来保证安全性.任何人都可以使用nusoap向我发送在服务器和客户端中应用的示例.
我正在使用nusoap来编写soap服务.
谢谢和问候,neetha
我正在尝试使用以下格式实现与Drupal 6的SOAP调用:
POST /0_5/ClassService.asmx HTTP/1.1
Host: api.mindbodyonline.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://clients.mindbodyonline.com/api/0_5/AddClientsToClasses"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<AddClientsToClasses xmlns="http://clients.mindbodyonline.com/api/0_5">
<Request>
<ClientIDs>
<string>string</string>
<string>string</string>
</ClientIDs>
<ClassIDs>
<int>int</int>
<int>int</int>
</ClassIDs>
<Test>boolean</Test>
<RequirePayment>boolean</RequirePayment>
</Request>
</AddClientsToClasses>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
我是SOAP的新手,所有的Web文档都不适用于Drupal.此外,我必须在SOAP(而不是HTTP GET或POST)中进行此调用.
我如何在Drupal中进行SOAP调用?您能否使用上面的示例请求格式提供有效的代码示例?
错误:未找到传输方式,或尚不支持所选传输方式!
当我调用网络服务时会发生此错误。
这是我的代码:
include("lib/bankmellat/nusoap.php");
$client = new \bankmellat\nusoap_client('https://pgwstest.bpm.bankmellat.ir/pgwchannel/services/pgw?wsdl');
$namespace = 'http://interfaces.core.sw.bps.com/';
$parameters = array();
$parameters['terminalId'] = $terminalId;
$parameters['userName'] = $userName;
.
.
.
$result = $client->call('bpPayRequest', $parameters , $namespace);
echo '<h2>Error!!</h2><pre>' . $client->getError(); . '</pre>';
Run Code Online (Sandbox Code Playgroud)
Ubuntu 12.04
阿帕奇2
PHP 5.3.10
cURL 在 php 上启用 - 版本:7.21.3
cURL 支持的协议:dict、file、ftp、ftps、gopher、http、https、imap、imaps、ldap、ldaps、pop3、pop3s、rtsp、smtp、smtps、telnet、tftp
我必须说,我在具有几乎相似资格的另一台服务器上实现了此代码,并且它们仍在工作!
请帮助解决这个问题..伙计们!谢谢。
安装步骤:
1) 从http://sourceforge.net/projects/nusoapforphp53/下载 php-soap(NuSOAP for PHP)
2) 用编辑器打开“php.ini”配置文件,找到“可加载扩展(模块)所在的目录”。
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
; extension_dir = "ext"
extension_dir = "D:/xammp/php/ext"
Run Code Online (Sandbox Code Playgroud)
3)解压Step#1下载的文件内容,放到上面的目录“ext”中。它提取到自己的目录“nusoap-for-php5.3-0.7.3?”中。只需将整个目录复制到“D:/xammp/php/ext”
4) 在 php.ini 中,寻找取消注释 php_soap.dll 扩展名以加载它。
//找到如下所示的行
;extension=php_soap.dll
Run Code Online (Sandbox Code Playgroud)
//取消注释如下:
extension=php_soap.dll
Run Code Online (Sandbox Code Playgroud)
保存编辑的 php.ini 文件并关闭它。
5) 最后,重启服务器所有服务并重新加载服务器配置文件。
但是 phpinfo 没有显示启用的肥皂,屏幕短片是从谷歌收集的,只是启用肥皂客户端的图像显示..

解决办法是什么??
nusoap ×10
php ×9
web-services ×5
soap ×4
api ×1
content-type ×1
drupal ×1
drupal-6 ×1
soap-client ×1
wsdl ×1
xml ×1