小编Sar*_*han的帖子

使用Apache CXF在SOAP POST请求中获取错误但curl工作正常

我有一个非常奇怪的问题.我正在尝试通过HTTPS执行SOAP POST请求.当我从我的代码发送请求时,我收到HTTP 500错误.现在从cxf日志中,如果我复制了相同的SOAP消息(标题和正文),我得到了错误,并使用简单的curl请求发布它,它工作正常.下面是我如何创建服务类和其他初始化

URL wsdlurl = SOAPWebServiceTransport.class.getClassLoader().
        getResource("my.wsdl");
OnlinePort service= new OnlinePortService(wsdlurl).getOnlinePortPort();
Client proxy = ClientProxy.getClient(service);

// Provides WS-Security
WSS4JOutInterceptor wss4jOut = new WSS4JOutInterceptor();
wss4jOut.setProperty("action", "UsernameToken");
wss4jOut.setProperty("user", userName);
wss4jOut.setProperty("passwordType", "PasswordText");
wss4jOut.setProperty("password", password);
wss4jOut.setProperty(WSHandlerConstants.ADD_UT_ELEMENTS,
        WSConstants.NONCE_LN + " " + WSConstants.CREATED_LN);
wss4jOut.setProperty(WSHandlerConstants.PW_CALLBACK_CLASS, ServerPasswordCallback.class.getName());

proxy.getEndpoint().getOutInterceptors().add(wss4jOut);
setConduitProperties((HTTPConduit) proxy.getConduit(),url);
Run Code Online (Sandbox Code Playgroud)

在set conduit方法中,我忽略了ssl检查(仅用于开发环境)并设置了一些标头.

TLSClientParameters tcp = new TLSClientParameters();
tcp.setDisableCNCheck(true);
// Creating Trust Manager
TrustManager[] trustAllCerts = new TrustManager[] {
    new X509TrustManager() {
        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
            return null;
        }

        public void checkClientTrusted(
                java.security.cert.X509Certificate[] certs, String authType) { …
Run Code Online (Sandbox Code Playgroud)

java apache https curl cxf

24
推荐指数
1
解决办法
5048
查看次数

节点上的soap正在将json解析为xml错误

在Nodejs中使用Soap模块(通过loopback-connector-soap),我正在尝试将json转换为xml以获取我的soap请求,但是我遇到了一些问题......

这是什么:

<ns:UserDefinedFields>
    <ns:UserDefinedField>
        <ns:displayName>Campaign?</ns:displayName>
        <ns:fieldValue>Yes</ns:fieldValue>
    </ns:UserDefinedField>
</ns:UserDefinedFields>
<ns:UserDefinedFields>
    <ns:UserDefinedField>
        <ns:displayName>Anticipated Use</ns:displayName>
    <ns:fieldValue>6</ns:fieldValue>
</ns:UserDefinedField>
Run Code Online (Sandbox Code Playgroud)

应该是什么:

<ns:UserDefinedFields>
    <ns:UserDefinedField>
        <base:displayName>Campaign?</base:displayName>
        <base:fieldValue>Yes</base:fieldValue>
    </ns:UserDefinedField>
    <ns:UserDefinedField>
        <base:displayName>Anticipated Use</base:displayName>
        <base:fieldValue>6</base:fieldValue>
    </ns:UserDefinedField>
</ns:UserDefinedFields>
Run Code Online (Sandbox Code Playgroud)
  • 应该只有一个 <ns:UserDefinedFields>
  • 应该<base:fieldValue>而不是<ns:fieldValue>

任何建议都会非常有帮助!谢谢!

XML:

{
    ...
    "UserDefinedFields": [
        {
            "displayName": "Campaign?",
            "fieldValue": "Yes"
        },
        {
            "displayName": "Anticipated Use",
            "fieldValue": 6
        }
    ]
    ...
}
Run Code Online (Sandbox Code Playgroud)

XSD:

...
<xs:element name="UserDefinedFields" minOccurs="0">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="UserDefinedField" type="base:UserDefinedFieldType" minOccurs="0" maxOccurs="15"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
...
Run Code Online (Sandbox Code Playgroud)

json soap node.js loopbackjs

14
推荐指数
1
解决办法
814
查看次数

如何忽略自签名证书错误node.js soap.js

我使用soap.js在node.js中创建了一个soap客户端.Soap通过https进行通信.当我尝试连接时,我不断收到此错误

{[错误:自签名证书]代码:'DEPTH_ZERO_SELF_SIGNED_CERT'}

以下是我的代码

var url = '../public/test.wsdl';

var client = soap.createClient(url,sslOptions, function(err, client) {
    client.setSecurity(new soap.WSSecurity('testuser', 'testpassword'));
      client.CheckStatus(args, function(err, result) {
          console.log(err);
        //  console.log(result);
      });

  });
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下ssl设置,但没有成功

sslOptions = {
  key: fs.readFileSync( '../certs/test-key.pem'),
  cert: fs.readFileSync( '../certs/test-cert.pem'),
  rejectUnauthorized : false,
  secureOptions : constants.SSL_OP_NO_TLSv1_2,
  strictSSL : false
};
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激 !!

javascript ssl soap-client node.js

11
推荐指数
1
解决办法
2万
查看次数

如何使用@WebServlet接受参数(以RESTFul方式)?

假设我想接受以下网址:

http://myserver/myapplication/posts
http://myserver/myapplication/posts/<id>
http://myserver/myapplication/posts/<id>/delete
Run Code Online (Sandbox Code Playgroud)

我怎样才能使用servlet装饰器@WebServlet呢?我正在调查value,urlPatterns但我不知道怎么做.例如,

@WebServlet(urlPatterns={"/posts", "/posts/*"})
[..]
String param = request.getPathInfo();
Run Code Online (Sandbox Code Playgroud)

给我一些结果,但如何使用它?此外,request.getPathInfo()似乎返回通配符的值,但如果我想要更多的参数,如果http://http://myserver/myapplication/posts/<id>/delete/<force>

java rest servlets servlet-3.0

1
推荐指数
1
解决办法
2501
查看次数

标签 统计

java ×2

node.js ×2

apache ×1

curl ×1

cxf ×1

https ×1

javascript ×1

json ×1

loopbackjs ×1

rest ×1

servlet-3.0 ×1

servlets ×1

soap ×1

soap-client ×1

ssl ×1