WebService客户端生成代码错误解决方案

1.在浏览器中打开webservice url,保存wsdl文件,如ContentService.xml 
2.通过cxf命令“wsdl2java –d E:/file –frontend jaxws21 –client C:\ ContentService.xml”生成客户端代码 
3.若报WSDLToJava Error: Thrown by JAXB : undefined simple or complex type 'soap-enc:Array' , 
则需要在生成的文件中找到 
<import namespace="http://schemas.xmlsoap.org/soap/encoding/" />, 
在浏览器中打开http://schemas.xmlsoap.org/soap/encoding/, 
保存文件soap-encoding.xsd, 
然后修改成<import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="soap-encoding.xsd"/>, 

再运行上面的命令即可。 

4.如果需要NTLM认证,则需在代码中加入如下的代码: 

Java代码   收藏代码
  1. Client client = ClientProxy.getClient(port);  
  2.   
  3. HTTPConduit http = (HTTPConduit) client.getConduit();  
  4.   
  5. HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();   
  6.   
  7. httpClientPolicy.setConnectionTimeout(36000);  
  8.   
  9. httpClientPolicy.setAllowChunking(false);  
  10.   
  11. http.setClient(httpClientPolicy);  
  12.   
  13. http.getAuthorization().setAuthorizationType("NTLM");   
  14.   
  15. http.getAuthorization().setUserName("xxxx");  
  16.   
  17. http.getAuthorization().setPassword("xxxxx");  

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的QT Webservice客户端程序,实现了调用WSDL文件中的方法并传递参数,获取Webservice服务的响应结果。 ```cpp #include <QtCore/QCoreApplication> #include <QtXml/QDomDocument> #include <QtNetwork/QNetworkAccessManager> #include <QtNetwork/QNetworkRequest> #include <QtNetwork/QNetworkReply> class WebserviceClient : public QObject { Q_OBJECT public: WebserviceClient(QObject *parent = 0) : QObject(parent) { manager = new QNetworkAccessManager(this); } void callWebService() { // Webservice URL QString url = "http://localhost:8080/Webservice/Service"; // SOAP request XML QString xmlRequest = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ser=\"http://service.webservice.com/\"><soapenv:Header/><soapenv:Body><ser:method><arg0>parameter1</arg0><arg1>parameter2</arg1></ser:method></soapenv:Body></soapenv:Envelope>"; // Create request QNetworkRequest request; request.setUrl(QUrl(url)); request.setHeader(QNetworkRequest::ContentTypeHeader, "text/xml;charset=UTF-8"); request.setRawHeader("SOAPAction", "http://service.webservice.com/method"); // Send request QNetworkReply *reply = manager->post(request, xmlRequest.toUtf8()); // Handle response QObject::connect(reply, SIGNAL(finished()), this, SLOT(onWebServiceResponse())); } private slots: void onWebServiceResponse() { QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender()); if (reply->error() == QNetworkReply::NoError) { // Parse response XML QDomDocument xmlResponse; xmlResponse.setContent(reply->readAll()); // Extract response data QString responseData = xmlResponse.documentElement().firstChild().firstChild().toElement().text(); // Output response data qDebug() << responseData; } else { // Handle error qDebug() << reply->errorString(); } reply->deleteLater(); } private: QNetworkAccessManager *manager; }; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); WebserviceClient client; client.callWebService(); return a.exec(); } ``` 在程序中,先定义了一个WebserviceClient类,用于封装Webservice客户端的相关功能。在类中,首先定义了一个QNetworkAccessManager对象,用于发送Webservice请求和接收Webservice响应。然后,实现了一个callWebService()方法,用于调用Webservice服务并传递参数。在方法中,首先定义了Webservice的URL和SOAP请求XML,然后创建了一个QNetworkRequest对象,并设置相关请求头部信息。接着,使用QNetworkAccessManager发送Webservice请求,并在onWebServiceResponse()槽函数中处理Webservice响应。在槽函数中,首先判断响应是否正常,如果正常则解析XML数据,提取响应数据并输出;如果出现错误则输出错误信息。最后,程序在main函数中创建了一个WebserviceClient对象,并调用了callWebService()方法来实现Webservice客户端的功能。 需要注意的是,Webservice服务的URL和SOAP请求XML需要根据具体情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值