Java实现Http工具类的封装操作示例
本文实例讲述了Java实现Http工具类的封装操作。分享给大家供大家参考,具体如下:
http工具类的实现:(通过apache包)第一个类
importjava.io.IOException; importorg.apache.http.HttpEntity; importorg.apache.http.HttpResponse; importorg.apache.http.HttpStatus; importorg.apache.http.client.ClientProtocolException; importorg.apache.http.client.HttpClient; importorg.apache.http.client.methods.HttpGet; importorg.apache.http.util.EntityUtils; importcom.gooagoo.stcu.utils.http.HttpClientUtils; publicclassHTTPRequest{ privateStringerrorMessage;//錯誤信息 /** *HTTP請求字符串資源 * *@paramurl *URL地址 *@return字符串資源 **/ publicStringhttpRequestString(Stringurl){ Stringresult=null; try{ HttpEntityhttpEntity=httpRequest(url); if(httpEntity!=null){ result=EntityUtils.toString(httpEntity,"urf-8");//使用UTF-8編碼 } }catch(IOExceptione){ errorMessage=e.getMessage(); } returnresult; } /** *HTTP請求字節數組資源 * *@paramurl *URL地址 *@return字節數組資源 **/ publicbyte[]httpRequestByteArray(Stringurl){ byte[]result=null; try{ HttpEntityhttpEntity=httpRequest(url); if(httpEntity!=null){ result=EntityUtils.toByteArray(httpEntity); } }catch(IOExceptione){ errorMessage=e.getMessage(); } returnresult; } /** *使用HTTPGET方式請求 * *@paramurl *URL地址 *@returnHttpEntiry對象 **/ privateHttpEntityhttpRequest(Stringurl){ HttpEntityresult=null; try{ HttpGethttpGet=newHttpGet(url); HttpClienthttpClient=HttpClientUtils.getHttpClient(); HttpResponsehttpResponse; httpResponse=httpClient.execute(httpGet); inthttpStatusCode=httpResponse.getStatusLine().getStatusCode(); /* *判斷HTTP狀態碼是否為200 */ if(httpStatusCode==HttpStatus.SC_OK){ result=httpResponse.getEntity(); }else{ errorMessage="HTTP:"+httpStatusCode; } }catch(ClientProtocolExceptione){ errorMessage=e.getMessage(); }catch(IOExceptione){ errorMessage=e.getMessage(); } returnresult; } /** *返回錯誤消息 * *@return錯誤信息 **/ publicStringgetErrorMessage(){ returnthis.errorMessage; } }
第二个类的实现:
packagecom.demo.http; importjava.net.UnknownHostException; importjava.util.ArrayList; importjava.util.HashMap; importjava.util.Iterator; importjava.util.List; importjava.util.Map; importjava.util.Map.Entry; importorg.apache.http.HttpResponse; importorg.apache.http.HttpStatus; importorg.apache.http.NameValuePair; importorg.apache.http.client.HttpClient; importorg.apache.http.client.entity.UrlEncodedFormEntity; importorg.apache.http.client.methods.HttpPost; importorg.apache.http.impl.client.DefaultHttpClient; importorg.apache.http.message.BasicNameValuePair; importorg.apache.http.params.BasicHttpParams; importorg.apache.http.params.HttpConnectionParams; importorg.apache.http.protocol.HTTP; importorg.apache.http.util.EntityUtils; publicclassHttpClientUtils{ privatestaticfinalintREQUEST_TIMEOUT=5*1000;//设置请求超时10秒钟 privatestaticfinalintSO_TIMEOUT=10*1000;//设置等待数据超时时间10秒钟 //staticParseXmlparseXML=newParseXml(); //初始化HttpClient,并设置超时 publicstaticHttpClientgetHttpClient(){ BasicHttpParamshttpParams=newBasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams,REQUEST_TIMEOUT); HttpConnectionParams.setSoTimeout(httpParams,SO_TIMEOUT); HttpClientclient=newDefaultHttpClient(httpParams); returnclient; } publicstaticbooleandoPost(Stringurl)throwsException{ HttpClientclient=getHttpClient(); HttpPosthttppost=newHttpPost(url); HttpResponseresponse; response=client.execute(httppost); if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){ returntrue; } client.getConnectionManager().shutdown(); returnfalse; } /** *与远程交互的返回值post方式 * *@paramhashMap *@paramurl *@return */ publicstaticStringgetHttpXml(HashMaphashMap,Stringurl){ StringresponseMsg=""; HttpPostrequest=newHttpPost(url); List params=newArrayList (); Iterator >iter=hashMap.entrySet() .iterator(); while(iter.hasNext()){ Entry entry=iter.next(); params.add(newBasicNameValuePair(entry.getKey(),entry.getValue())); } try{ request.setEntity(newUrlEncodedFormEntity(params,HTTP.UTF_8)); HttpClientclient=HttpClientUtils.getHttpClient(); HttpResponseresponse=client.execute(request); if(response.getStatusLine().getStatusCode()==200){ responseMsg=EntityUtils.toString(response.getEntity()); } }catch(UnknownHostExceptione){ e.printStackTrace(); }catch(Exceptione){ e.printStackTrace(); } returnresponseMsg; } /** *map转字符串拼接参数 * *@paramhashMap *@return */ publicstaticStringmapToString(HashMap hashMap){ StringparameStr=""; Iterator >iter=hashMap.entrySet() .iterator(); while(iter.hasNext()){ Entry entry=iter.next(); parameStr+="&"+entry.getKey()+"="+entry.getValue(); } if(parameStr.contains("&")){ parameStr=parameStr.replaceFirst("&","?"); } returnparameStr; } }
更多关于java相关内容感兴趣的读者可查看本站专题:《JavaSocket编程技巧总结》、《Java文件与目录操作技巧汇总》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。