publicstaticStringSendGET(Stringurl,Stringparam){
Stringresult="";//访问返回结果
BufferedReaderread=null;//读取访问结果
try{
//创建url
URLrealurl=newURL(url+"?"+param);
//打开连接
URLConnectionconnection=realurl.openConnection();
//设置通用的请求属性
connection.setRequestProperty("accept","*/*");
connection.setRequestProperty("connection","Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)");
//建立连接
connection.connect();
//获取所有响应头字段
Map<String,List<String>>map=connection.getHeaderFields();
//遍历所有的响应头字段,获取到cookies等
for(Stringkey:map.keySet()){
System.out.println(key+"--->"+map.get(key));
}
//定义BufferedReader输入流来读取URL的响应
read=newBufferedReader(newInputStreamReader(
connection.getInputStream(),"UTF-8"));
Stringline;//循环读取
while((line=read.readLine())!=null){
result+=line;
}
}catch(IOExceptione){
e.printStackTrace();
}finally{
if(read!=null){//关闭流
try{
read.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
returnresult;
}
❷ 我的手机写有JAVA扩展CLDC-1.1/MIDP-2.0是什么意思啊
J2ME的术语
MIDP
开放分类: 计算机技术、电脑
MIDP(Mobile Information Device Profile,移动信息设备配置文件)建立在 CLDC 的基础之上,用来描述手机和寻呼机这样更加具体化的的无线移动设备。
对于 Java ME 平台,MIDP 定义了一个标准的 Java API 集合,此集合与联网的受限设备配置 CLDC 一起提供了一个面向移动信息设备(如移动电话、双向寻呼机和无线个人电脑记事本)的完整 Java ME 应用程序运行环境。
MIDP 提供了以下功能:
·显示工具箱
·用户输入方法
·持久性数据存储(使用简单的面向记录的数据库模型)
·基于 HTTP 1.1 的网络(使用 CLDC 通用连接框架)
Java 规范请求 (Java Specification Request, jsR)-37 中定义了 MIDP 1.0 标准。
JSR-118 中定义了 MIDP 2.0 标准。
CLDC
开放分类: 计算机技术、电脑
CLDC(Connected Limited Device Configuration,联网的受限设备配置)是用来开发在无线设备上运行的应用程序所要用到的一组最小的 API。CLDC 描述了所有无线移动设备所需的一个最小级别的功能集合。
对于 Java ME 平台,CLDC 为移动电话、双向寻呼机以及类似设备定义了基本配置(Java 语言、虚拟机功能和基本类库)。这些设备具有以下特性:
·总内存量为 128 KB 到 512 KB。
·具有有限电源,如电池。
·可以连接到网络。
·具有相对有限的用户界面,通常只限文本。
CLDC 1.1 是 CLDC 1.0 规范的修订版本,包含很多新增功能(例如浮点和弱引用支持)以及其他增强功能。
Java 规范请求 (Java Specification Request, JSR) 30 中详细指定了 CLDC 1.0 的要求。
JSR 139 中详细指定了 CLDC 1.1 的要求。
J2ME是一种使用Java语言进行嵌入式设备编程的技术,但是嵌入式设备的种类过于繁多,至少有几百种之多,为了降低编程的复杂度,SUN公司将所有的嵌入式设备分为了两大类:
1 CDC(连接设备配置)
有稳定的电源供应
设备性能强劲
例如车载设备、机顶盒等。
2 CLDC(连接有限设备配置)
使用电池供电
设备性能有限
其中手机属于CLDC类别。
上面的说法都是从硬件划分的角度来说明CLDC的,下面从程序员的角度来理解一下CLDC的概念。其实对于程序员来说,CLDC主要包含三个部分:
1 Java虚拟机(又称JVM)
这个是所有Java程序运行的基础。对于手机来说,在手机出厂以前,已经固化在手机中了,出厂了以后就不能进行修改了。
2 一套标准的API实现
该标准的API主要包含java.io、java.lang、java.util包以及javax.microedition.io包中的部分。这个是规范要求必须实现的API,也固化在手机中,不能修改。
3 本地方法实现
在标准的API中,很多都是接口,这些就要求厂商在手机中提供真实的实现,而且很多本地方法也要求手机厂商进行实现。
❸ 如何在java中发起http和https请求
在Java中,发起HTTP请求的方法如下:
定义了一个名为httpRequest的函数,该函数接收三个参数:请求地址(requestUrl)、请求方式(requestMethod,值为"GET"或"POST")以及需要发送的数据(outputStr)。函数的主要功能是处理HTTP请求。
首先,通过URL类创建一个URL对象,然后使用openConnection方法打开一个到该URL的连接。
设置该连接的属性:允许输出和输入,设置请求方式,并进行连接。
如果需要向服务器端写内容(即发送数据),则需要通过conn.getOutputStream()方法获取一个输出流,并将数据写入该输出流中。
然后,通过conn.getInputStream()方法获取一个输入流,读取服务器端返回的内容。使用InputStreamReader将输入流转换为字符流,并通过BufferedReader进行逐行读取。
将读取到的内容逐行添加到一个StringBuffer对象中,并最终返回该对象的字符串表示。
如果在处理过程中发生异常,则会打印堆栈跟踪信息。
此函数适用于处理GET和POST两种HTTP请求方式。对于POST请求,可以通过设置请求方法为"POST"并发送数据来实现。
需要注意的是,此函数仅适用于HTTP请求。对于HTTPS请求,需要使用HttpsURLConnection类代替HttpURLConnection类,并在URL对象创建时指定协议为"https"。
在实际应用中,还可以对请求头进行设置,以满足不同的需求。例如,可以设置请求头中的Content-Type为application/x-www-form-urlencoded,以表明发送的数据为表单数据。
此外,还可以通过设置连接超时时间和读取超时时间来控制请求的响应时间,避免请求长时间无响应。
❹ 如何在java中发起http和https请求
1.写http请求方法
[java] view plain
//处理http请求 requestUrl为请求地址 requestMethod请求方式,值为"GET"或"POST"
public static String httpRequest(String requestUrl,String requestMethod,String outputStr){
StringBuffer buffer=null;
try{
URL url=new URL(requestUrl);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod(requestMethod);
conn.connect();
//往服务器端写内容 也就是发起http请求需要带的参数
if(null!=outputStr){
OutputStream os=conn.getOutputStream();
os.write(outputStr.getBytes("utf-8"));
os.close();
}
//读取服务器端返回的内容
InputStream is=conn.getInputStream();
InputStreamReader isr=new InputStreamReader(is,"utf-8");
BufferedReader br=new BufferedReader(isr);
buffer=new StringBuffer();
String line=null;
while((line=br.readLine())!=null){
buffer.append(line);
}
}catch(Exception e){
e.printStackTrace();
}
return buffer.toString();
}
2.测试。
[java] view plain
public static void main(String[] args){
String s=httpRequest("http://www.qq.com","GET",null);
System.out.println(s);
}
输出结果为www.qq.com的源代码,说明请求成功。
注:1).第一个参数url需要写全地址,即前边的http必须写上,不能只写www.qq.com这样的。
2).第二个参数是请求方式,一般接口调用会给出URL和请求方式说明。
3).第三个参数是我们在发起请求的时候传递参数到所要请求的服务器,要传递的参数也要看接口文档确定格式,一般是封装成json或xml.
4).返回内容是String类,但是一般是有格式的json或者xml。
二:发起https请求。
1.https是对链接加了安全证书SSL的,如果服务器中没有相关链接的SSL证书,它就不能够信任那个链接,也就不会访问到了。所以我们第一步是自定义一个信任管理器。自要实现自带的X509TrustManager接口就可以了。
[java] view plain
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.X509TrustManager;
public class MyX509TrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
// TODO Auto-generated method stub
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
// TODO Auto-generated method stub
}
@Override
public X509Certificate[] getAcceptedIssuers() {
// TODO Auto-generated method stub
return null;
}
}
注:1)需要的包都是java自带的,所以不用引入额外的包。
2.)可以看到里面的方法都是空的,当方法为空是默认为所有的链接都为安全,也就是所有的链接都能够访问到。当然这样有一定的安全风险,可以根据实际需要写入内容。
2.编写https请求方法。
[java] view plain
/*
* 处理https GET/POST请求
* 请求地址、请求方法、参数
* */
public static String httpsRequest(String requestUrl,String requestMethod,String outputStr){
StringBuffer buffer=null;
try{
//创建SSLContext
SSLContext sslContext=SSLContext.getInstance("SSL");
TrustManager[] tm={new MyX509TrustManager()};
//初始化
sslContext.init(null, tm, new java.security.SecureRandom());;
//获取SSLSocketFactory对象
SSLSocketFactory ssf=sslContext.getSocketFactory();
URL url=new URL(requestUrl);
HttpsURLConnection conn=(HttpsURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setRequestMethod(requestMethod);
//设置当前实例使用的SSLSoctetFactory
conn.setSSLSocketFactory(ssf);
conn.connect();
//往服务器端写内容
if(null!=outputStr){
OutputStream os=conn.getOutputStream();
os.write(outputStr.getBytes("utf-8"));
os.close();
}
//读取服务器端返回的内容
InputStream is=conn.getInputStream();
InputStreamReader isr=new InputStreamReader(is,"utf-8");
BufferedReader br=new BufferedReader(isr);
buffer=new StringBuffer();
String line=null;
while((line=br.readLine())!=null){
buffer.append(line);
}
}catch(Exception e){
e.printStackTrace();
}
return buffer.toString();
}
可见和http访问的方法类似,只是多了SSL的相关处理。
3.测试。先用http请求的方法访问,再用https的请求方法访问,进行对比。
http访问:
[java] view plain
public static void main(String[] args){
String s=httpRequest("https://kyfw.12306.cn/","GET",null);
System.out.println(s);
}
结果为:
https访问:
[java] view plain
public static void main(String[] args){
String s=httpsRequest("https://kyfw.12306.cn/","GET",null);
System.out.println(s);
}
结果为:
可见https的链接一定要进行SSL的验证或者过滤之后才能够访问。
三:https的另一种访问方式——导入服务端的安全证书。
1.下载需要访问的链接所需要的安全证书。https://kyfw.12306.cn/ 以这个网址为例。
1)在浏览器上访问https://kyfw.12306.cn/。
2)点击上图的那个打了×的锁查看证书。
3)选择复制到文件进行导出,我们把它导入到java项目所使用的jre的lib文件下的security文件夹中去,我的是这个路径。D:\Program Files (x86)\Java\jre8\lib\security
注:中间需要选导出格式,就选默认的就行,还需要命名,我命名的是12306.
2.打开cmd,进入到java项目所使用的jre的lib文件下的security目录。
3.在命令行输入 Keytool -import -alias 12306 -file 12306.cer -keystore cacerts
4.回车后会让输入口令,一般默认是changeit,输入时不显示,输入完直接按回车,会让确认是否信任该证书,输入y,就会提示导入成功。
5.导入成功后就能像请求http一样请求https了。
测试:
[java] view plain
public static void main(String[] args){
String s=httpRequest("https://kyfw.12306.cn/","GET",null);
System.out.println(s);
}
结果:
现在就可以用http的方法请求https了。
注:有时候这一步还是会出错,那可能是jre的版本不对,我们右键run as——run configurations,选择证书所在的jre之后再运行。