关于java 用https调用webservice 有安全机制 怎么加请求头 代码如下 急 在线等
public static String httpRequest(String url){
//接收数据
StringBuffer buffer = new StringBuffer();
try {
//创建SSLContext对象,并使用我们指定的信任管理器初始化
TrustManager[] tm = {new MyX509TrustManager()};
SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
sslContext.init(null, tm, new java.security.SecureRandom());
//从上述SSLContext对象中得到SSLSocketFactory对象
SSLSocketFactory ssf = sslContext.getSocketFactory();
//创建URL连接
URL urls = new URL(null, url,new sun.net.www.protocol.https.Handler());
//创建HttpS加密连接
HttpsURLConnection httpUrlConn = (HttpsURLConnection) urls.openConnection();
httpUrlConn.setSSLSocketFactory(ssf);
//设置是否向connection输出,因为这个是post请求,参数要放在 HTTP正文内因此需要设为true
httpUrlConn.setDoOutput(true);
httpUrlConn.setDoInput(true);
httpUrlConn.setUseCaches(false);
//设置请求方式
httpUrlConn.setRequestMethod("GET");
//将返回的输入流转换成字符串
InputStream inputStream = httpUrlConn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"utf-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
//接收数据
String str = null;
//循环读取数据
while ((str = bufferedReader.readLine())!=null) {
buffer.append(str);
}
//关闭连接
bufferedReader.close();
inputStreamReader.close();
inputStream.close();
httpUrlConn.disconnect();
} catch (Exception e) {
e.printStackTrace();
//logger.error("连接出错!");
}
return buffer.toString();
}
接口文件描述 如下 :中间层接口采用标准SOAP协议,及SOAPHeader安全认证。
接口地址:https://data.cydf.org.cn/usersys/Service.asmx
SOAPHeader:CredentialSoapHeader
CredentialSoapHeader属性:strAccount为账号,strKey为KEY
安全机制:中间层对需要调用的网站进行注册,给网站提供账号和KEY,网站调用时需要通过SOAPHeader传递账号及KEY到服务器进行身份认证,具体验证方法分为三层:
第一层:如果调用接口没有传递SoapHeader或者SoapHeader参数不全,则认为无权限,调用服务接口失败。
第二层:如果接口获取到的网站IP与账号组合不等于所传递过来的KEY,则认为无权限,调用服务接口失败。
第三层:如果账号、Key、IP与网站注册信息库中信息不一致,则认为无权限,调用服务接口失败
没有给demo 现在http可以直接调 但是全都是返回:验证信息为空 ! 对方给了我一个帐号密码 不知道怎么加进去 求解