「java调用wss」java调用wsdl无响应

博主:adminadmin 2022-11-27 22:35:08 45

今天给各位分享java调用wss的知识,其中也会对java调用wsdl无响应进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

电子口岸端口61231开启wss服务启动失败

解决方法:一般情况下是java进程还在运行导致的。启动任务管理器,在进程里面把java.exe和javaw.exe的程序全部杀掉即可。

1.前提是直接ws服务可以起来,但是wss用自己签的证书就不行的前提下

2.在浏览器设置允许从本机使用不安全证书

自己生成的证书,没有经过验证,jdk不认可 

启动服务器

使用SSLCre请求生成一个jssecacerts

将jssecacerts替换成D:\Program Files\Java\jdk1.8.0_171\jre\lib\security下的cacerts

要记得改名字 。

java 调用wss使用什么框架

在js中调用WSS提供的要领是一个会经常运用到的东西,为一个js调用WSS的通用代码,直接拿过来用就可以。

核心部分跟Ajax的核心代码基本相同,都是先构造一个XMLHttpRequest或者ActiveXObject对象,然后就是XML的发送和接收。

SPAPI_Core 

function SPAPI_Core() 

{

        this.createXMLHttpRequest = function()

        {

                 if (typeof XMLHttpRequest != "undefined")

                 {

                          return new XMLHttpRequest();

                 }

                 else if (typeof ActiveXObject != "undefined")

                 {

                          return new ActiveXObject("Microsoft.XMLHTTP");

                 }

                 else

                 {

                           throw new Error("XMLHttpRequest not supported");

                  }

         }

         this.executeRequest = function(serviceUrl, action, packet, params)

         {

                 var oXMLHttpRequest = this.createXMLHttpRequest();

                 var result = null;

                 var resultName;

                 

                 oXMLHttpRequest.open("POST", serviceUrl, false);

                 oXMLHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");

                 oXMLHttpRequest.setRequestHeader("SOAPAction", action);

                 if (params != null)

                 {       

                           for (var i=0; i  params.length; i++)

                           {

                                       packet = packet.replace('{' + i.toString() + '}', (params[i] == null ? '' : params[i]));

                                       }

                   }

                   oXMLHttpRequest.send(packet);

                   resultName = action.substring(action.lastIndexOf('/') + 1) + 'Result';

'Result';

                   var resBatch;

                   var status;

                   var statusText;

                   status = oXMLHttpRequest.status;

                   statusText = oXMLHttpRequest.statusText;

                   if (status == 200)

                   {

                            // Check for SharePoint error code

                            resBatch = oXMLHttpRequest.responseXML.getElementsByTagName(resultName);

                            var codeEl = oXMLHttpRequest.responseXML.getElementsByTagName('ErrorCode');

                            if (codeEl != null  codeEl.length  0)

                            {

                                      var spStatus = parseInt(codeEl[0].childNodes[0].nodeValue);

                                      if (spStatus != 0)

                                      {

                                                status = 0-spStatus; // Note we make this -ve to prevent confusion with the HTTP code

                                                var messageEl = oXMLHttpRequest.responseXML.getElementsByTagName('ErrorText');

                                                if (messageEl != null  messageEl.length = 0)

                                                {

                                                         statusText = messageEl[0].childNodes[0].nodeValue;

                                                 }

                                         }

                              }

                     }

                     result = {

                     status : status,

                     statusText : statusText,

                     responseXML : oXMLHttpRequest.responseXML,

                     responseText : oXMLHttpRequest.responseText,

                     resultNode : (resBatch == null resBatch.length == 0 ? null : resBatch[0])

                     };

                     return result;

          } 

}

然后就是写WSS中各个要领的调用接口,WSS中提供的要领特别多,这里就不一一列举了,有需要可以追问。

如何让java websocket服务端 支持wss

客户端:

client

1

2

3

4

5

6

7

!DOCTYPE html

html

body

h1WebSocket/h1

script src="client.js"/script

/body

/html

client.js

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

var ws = new WebSocket("ws://127.0.0.1:8080/");

ws.onopen = function() {

alert("Opened");

ws.send("I'm client");

};

ws.onmessage = function (evt) {

alert(evt.data);

};

ws.onclose = function() {

alert("Closed");

};

ws.onerror = function(err) {

alert("Error: " + err);

};

服务端可以用各种语言去实现,Java可以用Jetty,C#可以用SuperSocket,这里我举例用Node.js,创建server.js:

var WebSocketServer = require('ws').Server

, wss = new WebSocketServer({port: 8080});

wss.on('connection', function(ws) {

ws.on('message', function(message) {

console.log('received: %s', message);

});

ws.send('something');

});

运行方式:

1

2

npm install ws

node server.js

java生成webservice 中的message 是什么意思

在调用webService时,有时候需要在SOAP头中插入信息,比如鉴权信息。

下面的例子演示如何设置给WebService设置授权信息。

首先我们需要实现SOAPHandler接口的类,这个类决定了要调用那些Handler,以什么顺序调用。

最后我们需要给WebService的客户端添加HandlerResolver类实例.

默认情况下SOAP头是空的:

S:Header

wsse:Security xmlns:wsse=""

wsse:UsernameToken xmlns:wsu=""

wsse:UsernameTestUser/wsse:Username

wsse:Password Type=""TestPassword/wsse:Password

/wsse:UsernameToken

/wsse:Security/S:Header

如下是SOAPHandlerSOAPMessageContext的实现,这里有好多方法可以实现,但在这里我们仅需要实现handleMessage()方法。

package cn.outofmemory.ws.example;import java.util.Set;import javax.xml.namespace.QName;import javax.xml.soap.SOAPElement;import javax.xml.soap.SOAPEnvelope;import javax.xml.soap.SOAPHeader;import javax.xml.soap.SOAPMessage;import javax.xml.ws.handler.MessageContext;import javax.xml.ws.handler.soap.SOAPHandler;import javax.xml.ws.handler.soap.SOAPMessageContext;/**

*

* @author outofmemory.cn

*/public class HeaderHandler implements SOAPHandlerSOAPMessageContext {

public boolean handleMessage(SOAPMessageContext smc) {

Boolean outboundProperty = (Boolean) smc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);

if (outboundProperty.booleanValue()) {

SOAPMessage message = smc.getMessage();

try {

SOAPEnvelope envelope = smc.getMessage().getSOAPPart().getEnvelope();

SOAPHeader header = envelope.addHeader();

SOAPElement security =

header.addChildElement("Security", "wsse", "");

SOAPElement usernameToken =

security.addChildElement("UsernameToken", "wsse");

usernameToken.addAttribute(new QName("xmlns:wsu"), "");

SOAPElement username =

usernameToken.addChildElement("Username", "wsse");

username.addTextNode("TestUser");

SOAPElement password =

usernameToken.addChildElement("Password", "wsse");

password.setAttribute("Type", "");

password.addTextNode("TestPassword");

//Print out the outbound SOAP message to System.out

message.writeTo(System.out);

System.out.println("");

} catch (Exception e) {

e.printStackTrace();

}

} else {

try {

//This handler does nothing with the response from the Web Service so

//we just print out the SOAP message.

SOAPMessage message = smc.getMessage();

message.writeTo(System.out);

System.out.println("");

} catch (Exception ex) {

ex.printStackTrace();

}

}

return outboundProperty;

}

public Set getHeaders() {

//throw new UnsupportedOperationException("Not supported yet.");

return null;

}

public boolean handleFault(SOAPMessageContext context) {

//throw new UnsupportedOperationException("Not supported yet.");

return true;

}

public void close(MessageContext context) {

//throw new UnsupportedOperationException("Not supported yet.");

}}

如下是HandlerResolver的实现类定义:

package cn.outofmemory.ws.example;import java.util.ArrayList;import java.util.List;import javax.xml.ws.handler.Handler;import javax.xml.ws.handler.HandlerResolver;import javax.xml.ws.handler.PortInfo;/**

*

* @author outofmemory.cn

*/public class HeaderHandlerResolver implements HandlerResolver {public ListHandler getHandlerChain(PortInfo portInfo) {

ListHandler handlerChain = new ArrayListHandler();

HeaderHandler hh = new HeaderHandler();

handlerChain.add(hh);

return handlerChain;

}}

下面是调用webService的代码:

JavadbWebServiceService service = new JavadbWebServiceService();

HeaderHandlerResolver handlerResolver = new HeaderHandlerResolver();

service.setHandlerResolver(handlerResolver);

JavadbWebService port = service.getJavadbWebServicePort();

//调用web service

String currentTime = port.getTime();

System.out.println("Current time is: " + currentTime);

java http可以websocket不行

解决方案如下:

因为HTTPS是基于SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密,所以在HTTPS站点调用某些非SSL验证的资源时浏览器可能会阻止。

方案一:假设HTTPS站点使用Nginx服务器,其他服务器也是类似的思路,可以用服务器代理ws服务,可以用nginx的WebSocket proxying。

这样客户端请求的是wss://服务器,通过nginx的WebSocket proxying代理到实际不支持ssl的websocket服务器。

方案二:直接为WebSocket服务器增加ssl证书,这样就可以直接通过wss://来请求服务器了,以swoole为例,其他服务器也是类似的思路。

java调用wss的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java调用wsdl无响应、java调用wss的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-27,除非注明,否则均为首码项目网原创文章,转载请注明出处。