用delphi写web services写客户端的问题 将WSDLLocation设成你的wsdl的路径;然后选择你的Service以及Port,就可以了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 谢谢你上次关于用delphi写web services写客户端的问题,但是还有其他的问题。设置server和port还是不行,最后设置url就可以了,但是又遇到了新的问题,我的web services服务端是java写的,其中的接口的参数有复杂结构。用delphi调用时会出现问题,时间很紧急,能不能帮我解决这个问题。用到java文件是personinfo.javapublic class personinfo{ public java.lang.String pid; public java.lang.String pname; public java.lang.String psex; public java.lang.String pnative;}personservice.javapublic class personservice{ public void updatePersoninfo(pid){ System.out.println("pid="+pid+",pname="+pinfo.pname+" seted"); } public personinfo getPersoninfo(String pid){ System.out.println("getPersoninfo("+pid+")"); personinfo pinfo = new personinfo(); pinfo.pid = pid; pinfo.pname = "dd"; pinfo.psex = "na"; pinfo.pnative = "s"; return pinfo;xczc }}delphi这边的调用方法是将wsdl导入后用下面的代码procedure TForm1.Button1Click(Sender: TObject);var pinfo : personinfo; Ds : Datatran_Service;begin Ds := HTTPRIO1 as Datatran_Service; pinfo:=ds.getPersoninfo('ss');end;最后可以在服务端的控制台上看到以下的输出:getPersoninfo(ss)但是会报:Internal Server Error (500)的错误提示。现在这个复杂数据类型该怎么解决 我也是用delphi7调用java的webservice,就按照我说的设置,没有什么问题呀 zhx_232,我里边现在还没有用到中文,我用的是delphi6,另外我这里用的tomcat做的服务。我按照你说的方法配置不好,有一个最简单的列子只设置URL就可以了。 zhx_232,我的wsdl文件是这样的<?xml version="1.0" encoding="UTF-8"?><definitions name="Datatran_Service-interface" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><types> <xsd:schema> targetNamespace="http://www.ecerami.com/schema" xmlns="http://www.w3.org/2001/XMLSchema"> <xsd:complexType name="personinfo"> <xsd:sequence> <xsd:element name="pid" type="xsd:string"/> <xsd:element name="pname" type="xsd:string"/> <xsd:element name="psex" type="xsd:string"/> <xsd:element name="pnative" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:schema></types><message name="updatePersoninfoRequest"> <part name="pinfo" type="xsdl:personinfo"/></message><message name="getPersoninfoRequest"> <part name="pid" type="xsd:string"/></message><message name="getPersoninfoResponse"> <part name="return" type="xsd1:personinfo"/></message><portType name="Datatran_Service"> <operation name="updatePersoninfo"> <input message="updatePersoninfoRequest"/> </operation> <operation name="getPersoninfo"> <input message="getPersoninfoRequest"/> <output message="getPersoninfoResponse"/> </operation></portType><binding name="Datatran_ServiceBinding" type="Datatran_Service"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="updatePersoninfo"> <soap:operation soapAction="urn:demo1:Datatran_Service"/> <input> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:demo1:Datatran_Service" use="encoded"/> </input> </operation> <operation name="getPersoninfo"> <soap:operation soapAction="urn:demo1:Datatran_Service"/> <input> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:demo1:Datatran_Service" use="encoded"/> </input> <output> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:demo1:Datatran_Service" use="encoded"/> </output> </operation></binding><service name="DatatranService"> <port name="Datatran_port" binding="tns:Datatran_ServiceBinding"> <soap:address location="http://172.16.1.1:8080/soap/servlet/rpcrouter"/> </port></service> </definitions>在delphi7中选择wsdl source时选择这个文件点击next按钮时不能通过,提示:Could not convert variant of type (Null) into type (OleStr)。你能不能帮我看看这个文件有什么问题. struts2的问题 EJB1.1 EJBHome的规范 一个XML的问题 问个json类型转换的问题 java调用bat文件 hibernate让我苦恼. WebService与byte[]的问题 svn 包变成了文件夹 请教,谁可以给个例子看看?用户登陆时的编码,名称,部门等信息存在那里?用Swing写C/S时。 weblogic里面有weblogic.properties这个文件吗? 从SUN公司的网站上下载的Petstore(Blueprints样本程序),安装完成之后怎么不能运行 jboss 中如何改变app server 的port?
设置server和port还是不行,最后设置url就可以了,但是又遇到了新的问题,我的web services服务端是java写的,其中的接口的参数有复杂结构。用delphi调用时会出现问题,时间很紧急,能不能帮我解决这个问题。
用到java文件是
personinfo.java
public class personinfo
{
public java.lang.String pid;
public java.lang.String pname;
public java.lang.String psex;
public java.lang.String pnative;
}personservice.java
public class personservice
{
public void updatePersoninfo(pid){
System.out.println("pid="+pid+",pname="+pinfo.pname+" seted");
} public personinfo getPersoninfo(String pid){
System.out.println("getPersoninfo("+pid+")");
personinfo pinfo = new personinfo();
pinfo.pid = pid;
pinfo.pname = "dd";
pinfo.psex = "na";
pinfo.pnative = "s";
return pinfo;xczc
}
}delphi这边的调用方法是将wsdl导入后用下面的代码procedure TForm1.Button1Click(Sender: TObject);
var
pinfo : personinfo;
Ds : Datatran_Service;
begin
Ds := HTTPRIO1 as Datatran_Service;
pinfo:=ds.getPersoninfo('ss');
end;最后可以在服务端的控制台上看到以下的输出:getPersoninfo(ss)
但是会报:Internal Server Error (500)的错误提示。
现在这个复杂数据类型该怎么解决
我按照你说的方法配置不好,有一个最简单的列子只设置URL就可以了。
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="Datatran_Service-interface"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"><types>
<xsd:schema>
targetNamespace="http://www.ecerami.com/schema"
xmlns="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="personinfo">
<xsd:sequence>
<xsd:element name="pid" type="xsd:string"/>
<xsd:element name="pname" type="xsd:string"/>
<xsd:element name="psex" type="xsd:string"/>
<xsd:element name="pnative" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</types><message name="updatePersoninfoRequest">
<part name="pinfo" type="xsdl:personinfo"/>
</message><message name="getPersoninfoRequest">
<part name="pid" type="xsd:string"/>
</message><message name="getPersoninfoResponse">
<part name="return" type="xsd1:personinfo"/>
</message>
<portType
name="Datatran_Service">
<operation name="updatePersoninfo">
<input message="updatePersoninfoRequest"/>
</operation>
<operation name="getPersoninfo">
<input
message="getPersoninfoRequest"/>
<output
message="getPersoninfoResponse"/>
</operation>
</portType><binding
name="Datatran_ServiceBinding"
type="Datatran_Service">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation
name="updatePersoninfo">
<soap:operation
soapAction="urn:demo1:Datatran_Service"/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:demo1:Datatran_Service"
use="encoded"/>
</input>
</operation>
<operation
name="getPersoninfo">
<soap:operation
soapAction="urn:demo1:Datatran_Service"/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:demo1:Datatran_Service" use="encoded"/>
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:demo1:Datatran_Service"
use="encoded"/>
</output>
</operation>
</binding>
<service name="DatatranService">
<port name="Datatran_port" binding="tns:Datatran_ServiceBinding">
<soap:address location="http://172.16.1.1:8080/soap/servlet/rpcrouter"/>
</port>
</service>
</definitions>在delphi7中选择wsdl source时选择这个文件点击next按钮时不能通过,提示:Could not convert variant of type (Null) into type (OleStr)。你能不能帮我看看这个文件有什么问题.