Java如何使用HTTPclient访问url获得数据

作者:quainter 时间:2023-11-12 04:16:21 

使用HTTPclient访问url获得数据

最近项目上有个小功能需要调用第三方的http接口取数据,用到了HTTPclient,算是做个笔记吧!

1、使用get方法取得数据


/**
* 根据URL试用get方法取得返回的数据
* @param url
*        URL地址,参数直接挂在URL后面即可
* @return
*/  
public static String getGetDateByUrl(String url){  
   String data = null;  
   //构造HttpClient的实例    
   HttpClient httpClient = new HttpClient();    
   //创建GET方法的实例    
   GetMethod getMethod = new GetMethod(url);  
   //设置头信息:如果不设置User-Agent可能会报405,导致取不到数据  
   getMethod.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:39.0) Gecko/20100101 Firefox/39.0");  
   //使用系统提供的默认的恢复策略    
   getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());    
   try{  
       //开始执行getMethod    
       int statusCode = httpClient.executeMethod(getMethod);  
       if (statusCode != HttpStatus.SC_OK) {  
           System.err.println("Method failed:" + getMethod.getStatusLine());  
       }  
       //读取内容  
       byte[] responseBody = getMethod.getResponseBody();  
       //处理内容  
       data = new String(responseBody);  
   }catch (HttpException e){  
       //发生异常,可能是协议不对或者返回的内容有问题  
       System.out.println("Please check your provided http address!");  
       data = "";  
       e.printStackTrace();  
   }catch(IOException e){  
       //发生网络异常  
       data = "";  
       e.printStackTrace();  
   }finally{  
       //释放连接  
       getMethod.releaseConnection();  
   }  
   return data;  
}

2、使用POST方法取得数据


/**
* 根据post方法取得返回数据
* @param url
*          URL地址
* @param array
*          需要以post形式提交的参数
* @return
*/  
public static String getPostDateByUrl(String url,Map<String ,String> array){  
   String data = null;  
   //构造HttpClient的实例    
   HttpClient httpClient = new HttpClient();    
   //创建post方法的实例    
   PostMethod postMethod = new PostMethod(url);  
   //设置头信息  
   postMethod.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:39.0) Gecko/20100101 Firefox/39.0");  
   postMethod.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");  
   //遍历设置要提交的参数  
   Iterator it = array.entrySet().iterator();    
   while (it.hasNext()){  
       Map.Entry<String,String> entry =(Map.Entry) it.next();    
       String key = entry.getKey();    
       String value = entry.getValue().trim();    
       postMethod.setParameter(key,value);  
   }  
   //使用系统提供的默认的恢复策略    
   postMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());    
   try{  
       //执行postMethod    
       int statusCode = httpClient.executeMethod(postMethod);  
       if (statusCode != HttpStatus.SC_OK) {  
           System.err.println("Method failed:" + postMethod.getStatusLine());  
       }  
       //读取内容  
       byte[] responseBody = postMethod.getResponseBody();  
       //处理内容  
       data = new String(responseBody);  
   }catch (HttpException e){  
       //发生致命的异常,可能是协议不对或者返回的内容有问题  
       System.out.println("Please check your provided http address!");  
       data = "";  
       e.printStackTrace();  
   }catch(IOException e){  
       //发生网络异常  
       data = "";  
       e.printStackTrace();  
   }finally{  
       //释放连接  
       postMethod.releaseConnection();  
   }  
   System.out.println(data);  
   return data;  
}

使用httpclient后台调用url方式

使用httpclient调用后台的时候接收url类型的参数需要使用UrlDecoder解码,调用的时候需要对参数使用UrlEncoder对参数进行编码,然后调用。


@SuppressWarnings("deprecation")
@RequestMapping(value = "/wechatSigns", produces = "application/json;charset=utf-8")
@ResponseBody
public String wechatSigns(HttpServletRequest request, String p6, String p13) {
Map<String, String> ret = new HashMap<String, String>();
try {
System.out.println("*****************************************p6:"+p6);
URLDecoder.decode(p13);
System.out.println("*****************************************p13:"+p13);
String p10 = "{\"p1\":\"1\",\"p2\":\"\",\"p6\":\"" + p6 + "\",\"p13\":\"" + p13 + "\"}";
p10 = URLEncoder.encode(p10, "utf-8");
String url = WebserviceUtil.getGetSignatureUrl() + "?p10=" + p10;
String result = WebConnectionUtil.sendGetRequest(url);
JSONObject fromObject = JSONObject.fromObject(URLDecoder.decode(result, "utf-8"));
System.out.println(fromObject);
String resultCode = JSONObject.fromObject(fromObject.getString("meta")).getString("result");
if ("0".equals(resultCode)) {
JSONObject fromObject2 = JSONObject.fromObject(fromObject.get("data"));
String timestamp = fromObject2.getString("timestamp");
String appId = fromObject2.getString("appId");
String nonceStr = fromObject2.getString("nonceStr");
String signature = fromObject2.getString("signature");
ret.put("timestamp", timestamp);
ret.put("appId", appId);
ret.put("nonceStr", nonceStr);
ret.put("signature", signature);
JSONObject jo = JSONObject.fromObject(ret);
return ResultJsonBean.success(jo.toString());
} else {
String resultMsg = JSONObject.fromObject(fromObject.getString("meta")).getString("errMsg");
return ResultJsonBean.fail(ConnectOauthCodeInfo.REQ_WECHATTOCKEN_CODE, resultMsg, "");
}
} catch (Exception e) {
logger.error(e, e);
return ResultJsonBean.fail(ConnectOauthCodeInfo.REQ_WECHATREQERROE_CODE,
ConnectOauthCodeInfo.REQ_WECHATREQERROE_CODE, "");
}
}

<pre name="code" class="java">package com.dcits.djk.core.util;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import net.sf.json.JSONObject;

public class WebConnectionUtil {
public static String sendPostRequest(String url,Map paramMap,String userId){
CloseableHttpClient httpclient=null;
CloseableHttpResponse response=null;
try{
httpclient = HttpClients.createDefault();
HttpPost httppost = new HttpPost(url);
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
if(userId != null || "".equals(userId) ){
formparams.add(new BasicNameValuePair("userId",userId));
}
Set keSet=paramMap.entrySet();
for(Iterator itr=keSet.iterator();itr.hasNext();){
Map.Entry me=(Map.Entry)itr.next();
Object key=me.getKey();
Object valueObj=me.getValue();
String[] value=new String[1];
if(valueObj == null){
value[0] = "";
}else{
if(valueObj instanceof String[]){  
           value=(String[])valueObj;  
       }else{  
           value[0]=valueObj.toString();  
       }
}
for(int k=0;k<value.length;k++){  
formparams.add(new BasicNameValuePair(key.toString(),StringUtil.filterSpecialChar(value[k])));
       }
}
UrlEncodedFormEntity uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
httppost.setEntity(uefEntity);

response = httpclient.execute(httppost);
if(response.getStatusLine().getStatusCode() == 200){
HttpEntity entity = response.getEntity();
String resultInfo = EntityUtils.toString(entity, "UTF-8");
return resultInfo;
}else{
return response.getStatusLine().getStatusCode() + "";
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
if(httpclient != null){
httpclient.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if(response != null){
response.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return "404";
}

public static String sendPostRequest(String url,Map paramMap){
CloseableHttpClient httpclient=null;
CloseableHttpResponse response=null;

try{
httpclient = HttpClients.createDefault();
HttpPost httppost = new HttpPost(url);
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
Set keSet=paramMap.entrySet();
for(Iterator itr=keSet.iterator();itr.hasNext();){
Map.Entry me=(Map.Entry)itr.next();
Object key=me.getKey();
Object valueObj=me.getValue();
String[] value=new String[1];
if(valueObj == null){
value[0] = "";
}else{
if(valueObj instanceof String[]){  
           value=(String[])valueObj;  
       }else{  
           value[0]=valueObj.toString();  
       }
}
for(int k=0;k<value.length;k++){  
formparams.add(new BasicNameValuePair(key.toString(),StringUtil.filterSpecialChar(value[k])));
       }
}
UrlEncodedFormEntity uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
httppost.setEntity(uefEntity);

response = httpclient.execute(httppost);
if(response.getStatusLine().getStatusCode() == 200){
HttpEntity entity = response.getEntity();
String resultInfo = EntityUtils.toString(entity, "UTF-8");
return resultInfo;
}else{
return response.getStatusLine().getStatusCode() + "";
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
if(httpclient != null){
httpclient.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if(response != null){
response.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return "404";
}

public static String downloadFileToImgService(String remoteUtl,String imgUrl,String tempUrl){
CloseableHttpClient httpclientRemote=null;
CloseableHttpResponse responseRemote=null;
CloseableHttpClient httpclientImg=null;
CloseableHttpResponse responseImg=null;
try{
httpclientRemote = HttpClients.createDefault();
HttpGet httpgetRemote = new HttpGet(remoteUtl);

responseRemote = httpclientRemote.execute(httpgetRemote);
if(responseRemote.getStatusLine().getStatusCode() != 200){
return "";
}
HttpEntity resEntityRemote = responseRemote.getEntity();
InputStream isRemote = resEntityRemote.getContent();
//写入文件
File file = null;

boolean isDownSuccess = true;
BufferedOutputStream bos = null;
try{
BufferedInputStream bif = new BufferedInputStream(isRemote);
byte bf[] = new byte[28];
bif.read(bf);
String suffix = FileTypeUtil.getSuffix(bf);
file = new File(tempUrl + "/" + UuidUtil.get32Uuid()+suffix);
bos = new BufferedOutputStream(new FileOutputStream(file));
if(!file.exists()){
file.createNewFile();
}
bos.write(bf, 0, 28);
byte b[] = new byte[1024*3];
int len = 0;
while((len=bif.read(b)) != -1){
bos.write(b, 0, len);
}
}catch(Exception e){
e.printStackTrace();
isDownSuccess = false;
}finally{
try {
if(bos != null){
bos.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
if(!isDownSuccess){
return "";
}

httpclientImg = HttpClients.createDefault();
HttpPost httpPostImg = new HttpPost(imgUrl);
MultipartEntityBuilder requestEntity = MultipartEntityBuilder.create();
requestEntity.addBinaryBody("userFile", file);

HttpEntity httprequestImgEntity = requestEntity.build();
httpPostImg.setEntity(httprequestImgEntity);
responseImg = httpclientImg.execute(httpPostImg);
if(responseImg.getStatusLine().getStatusCode() != 200){
return "";
}
HttpEntity entity = responseImg.getEntity();
String json = EntityUtils.toString(entity, "UTF-8");
json = json.replaceAll("\"","");
String[] jsonMap = json.split(",");
String resultInfo = "";
for(int i = 0;i < jsonMap.length;i++){
String str = jsonMap[i];
if(str.startsWith("url:")){
resultInfo = str.substring(4);
}else if(str.startsWith("{url:")){
resultInfo = str.substring(5);
}
}
if(resultInfo.endsWith("}")){
resultInfo = resultInfo.substring(0,resultInfo.length()-1);
}
try{
if(file != null){
file.delete();
}
}catch(Exception e){
e.printStackTrace();
}
return resultInfo;
}catch(Exception e){
e.printStackTrace();
}finally{
try {
if(httpclientRemote != null){
httpclientRemote.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if(responseRemote != null){
responseRemote.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if(httpclientImg != null){
httpclientImg.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if(responseImg != null){
responseImg.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return "";
}

public static String downloadFileToImgService(File file,String imgUrl){
CloseableHttpClient httpclientImg=null;
CloseableHttpResponse responseImg=null;
try{
httpclientImg = HttpClients.createDefault();
HttpPost httpPostImg = new HttpPost(imgUrl);
MultipartEntityBuilder requestEntity = MultipartEntityBuilder.create();
requestEntity.addBinaryBody("userFile", file);

HttpEntity httprequestImgEntity = requestEntity.build();
httpPostImg.setEntity(httprequestImgEntity);
responseImg = httpclientImg.execute(httpPostImg);
if(responseImg.getStatusLine().getStatusCode() != 200){
return "";
}
HttpEntity entity = responseImg.getEntity();
String json = EntityUtils.toString(entity, "UTF-8");
json = json.replaceAll("\"","");
String[] jsonMap = json.split(",");
String resultInfo = "";
for(int i = 0;i < jsonMap.length;i++){
String str = jsonMap[i];
if(str.startsWith("url:")){
resultInfo = str.substring(4);
}else if(str.startsWith("{url:")){
resultInfo = str.substring(5);
}
}
if(resultInfo.endsWith("}")){
resultInfo = resultInfo.substring(0,resultInfo.length()-1);
}
return resultInfo;
}catch(Exception e){
e.printStackTrace();
}finally{
try {
if(httpclientImg != null){
httpclientImg.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if(responseImg != null){
responseImg.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return "";
}

public static String sendGetRequest(String url){
CloseableHttpClient httpclient=null;
CloseableHttpResponse response=null;
try{
httpclient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(url);

response = httpclient.execute(httpGet);
if(response.getStatusLine().getStatusCode() == 200){
HttpEntity entity = response.getEntity();
String resultInfo = EntityUtils.toString(entity, "UTF-8");
return resultInfo;
}else{
return response.getStatusLine().getStatusCode() + "";
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
if(httpclient != null){
httpclient.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if(response != null){
response.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return "404";
}

public static String sendHttpsPostRequestUseStream(String url,String param){
CloseableHttpClient httpclient=null;
CloseableHttpResponse response=null;
try{
SSLContext ctx = SSLContext.getInstance("TLS");
X509TrustManager xtm = new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {

}

public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {

}

public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
TrustManager[] tm = {xtm};
ctx.init(null,tm,null);
HostnameVerifier hv = new HostnameVerifier(){
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
};
httpclient = HttpClients.custom().setSSLHostnameVerifier(hv).setSSLContext(ctx).build();
HttpPost httpPost = new HttpPost(url);
StringEntity strEntity = new StringEntity(param,"utf-8");
httpPost.setEntity(strEntity);

response = httpclient.execute(httpPost);
if(response.getStatusLine().getStatusCode() == 200){
HttpEntity entity = response.getEntity();
String resultInfo = EntityUtils.toString(entity, "UTF-8");
return resultInfo;
}else{
return response.getStatusLine().getStatusCode() + "";
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
if(httpclient != null){
httpclient.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if(response != null){
response.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return "404";
}

public static String sendHttpsPostRequestUseStream(String url,Map paramMap){
CloseableHttpClient httpclient=null;
CloseableHttpResponse response=null;
try{
SSLContext ctx = SSLContext.getInstance("TLS");
X509TrustManager xtm = new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {

}

public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {

}

public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
TrustManager[] tm = {xtm};
ctx.init(null,tm,null);
HostnameVerifier hv = new HostnameVerifier(){
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
};
httpclient = HttpClients.custom().setSSLHostnameVerifier(hv).setSSLContext(ctx).build();
HttpPost httpPost = new HttpPost(url);
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
Set keSet=paramMap.entrySet();
for(Iterator itr=keSet.iterator();itr.hasNext();){
Map.Entry me=(Map.Entry)itr.next();
Object key=me.getKey();
Object valueObj=me.getValue();
String[] value=new String[1];
if(valueObj == null){
value[0] = "";
}else{
if(valueObj instanceof String[]){  
           value=(String[])valueObj;  
       }else{  
           value[0]=valueObj.toString();  
       }
}
for(int k=0;k<value.length;k++){  
formparams.add(new BasicNameValuePair(key.toString(),StringUtil.filterSpecialChar(value[k])));
       }
}
UrlEncodedFormEntity uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
httpPost.setEntity(uefEntity);

response = httpclient.execute(httpPost);
if(response.getStatusLine().getStatusCode() == 200){
HttpEntity entity = response.getEntity();
String resultInfo = EntityUtils.toString(entity, "UTF-8");
return resultInfo;
}else{
return response.getStatusLine().getStatusCode() + "";
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
if(httpclient != null){
httpclient.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if(response != null){
response.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return "404";
}

public static String sendHttpsGetRequestUseStream(String url){
CloseableHttpClient httpclient=null;
CloseableHttpResponse response=null;
try{
SSLContext ctx = SSLContext.getInstance("TLS");
X509TrustManager xtm = new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {

}

public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {

}

public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
TrustManager[] tm = {xtm};
ctx.init(null,tm,null);
HostnameVerifier hv = new HostnameVerifier(){
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
};
httpclient = HttpClients.custom().setSSLHostnameVerifier(hv).setSSLContext(ctx).build();
HttpGet httpGet = new HttpGet(url);

response = httpclient.execute(httpGet);
if(response.getStatusLine().getStatusCode() == 200){
HttpEntity entity = response.getEntity();
String resultInfo = EntityUtils.toString(entity, "UTF-8");
return resultInfo;
}else{
return response.getStatusLine().getStatusCode() + "";
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
if(httpclient != null){
httpclient.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if(response != null){
response.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return "404";
}

public static String sendHttpsPostRequestUseStreamForYZL(String url,OauthToken param){
CloseableHttpClient httpclient=null;
CloseableHttpResponse response=null;
try{
SSLContext ctx = SSLContext.getInstance("TLS");
X509TrustManager xtm = new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {

}

public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {

}

public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
TrustManager[] tm = {xtm};
ctx.init(null,tm,null);
HostnameVerifier hv = new HostnameVerifier(){
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
};
httpclient = HttpClients.custom().setSSLHostnameVerifier(hv).setSSLContext(ctx).build();
HttpPost httpPost = new HttpPost(url);
StringEntity strEntity = new StringEntity(param.toString(),"utf-8");
httpPost.setEntity(strEntity);
httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded");

response = httpclient.execute(httpPost);
if(response.getStatusLine().getStatusCode() == 200){
HttpEntity entity = response.getEntity();
String resultInfo = EntityUtils.toString(entity, "UTF-8");
return resultInfo;
}else{
return response.getStatusLine().getStatusCode() + "";
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
if(httpclient != null){
httpclient.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if(response != null){
response.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return "404";
}
}

来源:https://www.iteye.com/blog/quainter-2231502

标签:Java,HTTPclient,url,数据
0
投稿

猜你喜欢

  • java实现excel和txt文件互转

    2023-10-07 23:04:05
  • Android自定义带进度条WebView仿微信加载过程

    2022-05-08 04:52:46
  • 通俗易通讲解Android蓝牙键值适配

    2022-06-19 07:50:34
  • 全面理解java中的异常处理机制

    2023-10-26 04:08:20
  • IDEA 2019.2.3破解激活教程(亲测有效)

    2023-02-21 22:16:23
  • C语言实现贪吃蛇小游戏开发

    2022-08-20 00:03:07
  • Struts2 $,#,%详解及实例代码

    2021-09-10 04:18:40
  • 浅谈Spring与SpringMVC父子容器的关系与初始化

    2023-02-08 12:09:05
  • SpringAOP+RabbitMQ+WebSocket实战详解

    2023-01-01 18:40:25
  • 在android中实现类似uc和墨迹天气的左右拖动效果

    2022-06-18 08:47:50
  • win7配置adb环境变量的方法步骤

    2022-11-10 16:45:12
  • Unity3D实现飞机大战游戏(2)

    2021-11-16 10:41:38
  • SpringBoot整合Redis之编写RedisConfig

    2023-08-29 02:35:57
  • 基于Spring@Autowired注解与自动装配详谈

    2022-01-14 09:38:49
  • 微服务架构设计RocketMQ基础及环境整合

    2023-02-18 17:18:15
  • springboot中使用FastJson解决long类型在js中失去精度的问题

    2022-04-05 05:15:27
  • Android ListView 和ScroolView 出现onmeasure空指针的解决办法

    2021-11-25 18:19:03
  • Java爬取豆瓣电影数据的方法详解

    2021-12-12 16:21:06
  • Android实现简单音乐播放器(MediaPlayer)

    2023-04-24 19:28:57
  • spring缓存cache的使用详解

    2023-03-28 11:36:14
  • asp之家 软件编程 m.aspxhome.com