「java调用wss」java调用wsdl无响应
今天给各位分享java调用wss的知识,其中也会对java调用wsdl无响应进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、电子口岸端口61231开启wss服务启动失败
- 2、java 调用wss使用什么框架
- 3、如何让java websocket服务端 支持wss
- 4、java生成webservice 中的message 是什么意思
- 5、java http可以websocket不行
电子口岸端口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的信息别忘了在本站进行查找喔。
发布于:2022-11-27,除非注明,否则均为
原创文章,转载请注明出处。