由于其他人使用Apache Axis版本1.4创建了格式错误的WSDL定义,我很难创建WSDL客户端。
让我向您展示我正在遵循的步骤:
首先,我在SOAP IU上加载我的WSDLendpoint超文本传输协议://xxxxx/ugar Soap? wsdl。程序自动生成以下请求:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bal="http://xxxx/uglySoap.xsd">
<soapenv:Header/>
<soapenv:Body>
<bal:CreditRequest>
<bal:MSISDN>?</bal:MSISDN>
<bal:amountToCredit>?</bal:amountToCredit>
<!--Optional:-->
<bal:reason>?</bal:reason>
<bal:transId>?</bal:transId>
</bal:CreditRequest>
</soapenv:Body>
</soapenv:Envelope>
此请求错误,因为它缺少标头(您提供凭据的位置)。在SOAP UI上,这不是问题,我可以手动添加缺少的文本,它将非常有效。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:msp="http:xxxxxx/uglySoap.xsd" xmlns:bal="http://xxxxxx/uglySoap.xsd">
<soapenv:Header>
<msp:messageHeader>
<msp:trackingMessageHeader>
<msp:messageId>xxx</msp:messageId>
<msp:carrierId>xxx</msp:carrierId>
<msp:userId>xxxx</msp:userId>
<msp:password>xxxx</msp:password>
</msp:trackingMessageHeader>
</msp:messageHeader>
</soapenv:Header>
<!--from here is the same thing as before-->
<soapenv:Body>
<bal:CreditRequest>
<bal:MSISDN>xxxxx</bal:MSISDN>
<bal:amountToCredit>xxxx</bal:amountToCredit>
<!--Optional:-->
<bal:reason>xxxx</bal:reason>
<bal:transId>xxxx</bal:transId>
</bal:CreditRequest>
</soapenv:Body>
</soapenv:Envelope>
当我尝试在Java上使用web服务时,真正的痛苦开始了。Eclipse CXF 2.7.9。该工具将毫无困难地导入拙劣的wsdl版本,但调用其方法是无用的,因为它们很好。。。糟糕透了。
creditResponse=余额管理器。getBalanceManagement()。applyCredit(creditRequest,authHeader);
JAVA错误:方法信用(CreditRequest、MessageHeader)未为BalanceManagement类型定义。真的吗?你已经知道会发生这种情况。
所以
请问,是否有任何解决方案Java,我可以打孔我的SOAP请求,URL,并获得响应作为. XML文件(或甚至作为纯文本,没问题!)就像SOAPUI一样?
非常感谢。
好了,伙计们,我找到了一个可行的解决方案,可以手工提出请求。
创建一个新的Maven项目:
package main;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.junit.Assert;
import io.restassured.path.xml.XmlPath;
public class Client {
public void executeRequest() {
try
{
CloseableHttpClient client = HttpClients.createDefault(); // create client
HttpPost request = new HttpPost("http://172.27.241.11:8195/mspgwservices/services/BalanceManagement"); // Create
// the
String requestXmlText = "<soapenv:Envelope ...INCLUDE YOUR XML REQUEST HERE, ON THE SAME WAY YOU WOULD DO IT ON SOAP UI... </soapenv:Envelope>";
StringEntity stringEntity = new StringEntity(requestXmlText, "utf-8");
request.addHeader("soapAction", "Credit");
request.addHeader("Accept", "text/xml");
request.addHeader("Content-Type", "text/xml;charset=utf-8");
request.setEntity(stringEntity);
CloseableHttpResponse response = client.execute(request);// Execute the command
int statusCode = response.getStatusLine().getStatusCode();
// Get the status code and assert
System.out.println("Status code: " + statusCode);
Assert.assertEquals(200, statusCode);
String responseString = EntityUtils.toString(response.getEntity(), "UTF-8");
// Getting the Response body
System.out.println(responseString);
XmlPath jsXpath = new XmlPath(responseString);
String textResult = jsXpath.getString("respDescription");
System.out.println("result: " + textResult );
}
catch (Exception ex)
{
System.out.println("Error." + ex.toString());
}
}
}
另外,不要忘记在POM中添加以下行。XML,以便导入所有需要的库
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>BalanceadorLineas</groupId>
<artifactId>BalanceadorLineas</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.12</version>
</dependency>
<dependency>
<groupId>org.springframework.restdocs</groupId>
<artifactId>spring-restdocs-restassured</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.scala-js</groupId>
<artifactId>scalajs-junit-test-runtime_2.11</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
</project>
痛苦终于结束了!希望它对你也有用。
在将配置单元外部表从RC格式升级为ORC格式并在其上运行MSCK修复表(当我确实从表中选择全部时)时,我得到以下错误- 将RC格式的历史数据迁移到ORC格式的新定义的过程是什么?
问题内容: 我正在获取JSON格式和唯一可用格式的数据提要。在PHP中,我正在使用json_decode解码JSON,但此操作已中断,并且我发现JSON是在某些地方生成的,其昵称用双引号引起来。我使用以下方法验证了这一点:http : //jsonformatter.curiousconcept.com 我无法控制数据的创建,但是当这种格式出现时,我必须处理它。解析后的数据将被放入MySQL TA
问题内容: 错误 我在Java项目中使用wsimport来生成三个SOAP Web服务的源。前两个可以正常工作:我使用JAX-WS Maven插件来获取WSDL文件并生成相应的Java源文件。 对于一个Web服务,此操作失败。我收到以下错误: 罪犯 此WSDL文件与有效文件之间的区别在于错误消息中指出的行(第80、127和142行): 注意:wsdl文件的根元素定义“ s”名称空间,因此: 我尝试
FileLoaderImportCircularReferenceException:在“/app/config/routing_dev.yml”(“/app/config/routing_dev.yml”)中检测到循环引用 我正在努力做到这一点:http://symfony.com/doc/current/cookbook/routing/custom_route_loader.html#mor
我正在使用Spring 5 WebClient进行一个外部api调用,希望将响应映射到这样的Object: 但是我收到一个错误: 但是,如果我像这样将响应正文提取到字符串: 然后它就正常工作了。有什么办法解决这个问题吗? 编辑: 响应正文: 标题:
我试图解决这个问题已经有一段时间了,但我所尝试的一切都是无用的。我尝试了HttpClientHandler,但仍然得到了错误! 错误消息: 无法建立SSL连接,请参阅内部异常 身份验证失败,请参阅内部异常 收到的消息意外或格式不正确 我从零开始学习c#,而且我对c#语言非常熟悉,所以请解释一下问题所在。