A. 怎麼使用httpclient實現http介面調用實例
你的意思是用HttpClient實現網路請求?
如果是的話,下面這段代碼應該可以實現:
HttpClientclient=newDefaultHttpClient();
//strUrl是請求地址
HttpGetget=newHttpGet(strUrl);
try
{
HttpResponseresponse=client.execute(get);
if(response.getStatusLine().getStatusCode()==200)
{
HttpEntityentity=response.getEntity();
//這里可以用數據流進行接收,我這里用的位元組數組
finalbyte[]resultData=EntityUtils.toByteArray(entity);
}
}
catch(Exceptione)
{
e.printStackTrace();
}
B. 如何寫一個HttpClient
如何設置一個HttpClient的請求Content-Type頭
給數組賦值的方法除了用賦值語句對數組元素逐個賦值外, 還可採用初始化賦值和動態賦值的方法。
數組初始化賦值是指在數組定義時給數組元素賦予初值。數組初始化是在編譯階段進行的。這樣將減少運行時間,提高效率。
初始化賦值的一般形式為:
類型說明符 數組名[常量表達式]={值,值……值};
其中在{ }中的各數據值即為各元素的初值,各值之間用逗號間隔。
例如:
int a[10]={ 0,1,2,3,4,5,6,7,8,9 };
相當於a[0]=0;a[1]=1a[9]=9;
c語言對數組的初始化賦值還有以下幾點規定:
1) 可以只給部分元素賦初值。
當{ }中值的個數少於元素個數時,只 給前面部分元素賦值。
例如:
int a[10]={0,1,2,3,4};
表示只給a[0]~a[4]5個元素賦值,而後5個元素自動賦0值。
2) 只能給元素逐個賦值,不能給數組整體賦值。
例如給十個元素全部賦1值,只能寫為:
int a[10]={1,1,1,1,1,1,1,1,1,1};
而不能寫為:
C. asp語言中,可以通過httpclient以get或者post方式發送請求嗎
這個應該是不行的吧 除非你用伺服器登錄他們的網站 因為統計ip總是記錄客戶端的ip 只有把你自己的伺服器當作客戶端才可以
D. httpClient到底是干嗎用的
HttpClient 是 Apache Jakarta Common 下的子項目,可以用來提供高效的、最新的、功能豐富的支持 HTTP 協議的客戶端編程工具包,並且它支持 HTTP 協議最新的版本和建議。一般用來網上抓包或者模擬登陸用的 比如:
(1) 使用GET方法抓包
1. 創建 HttpClient 的實例
2. 創建某種連接方法的實例,在這里是GetMethod。在 GetMethod 的構造函數中傳入待連接的地址
3. 調用第一步中創建好的實例的 execute 方法來執行第二步中創建好的 method 實例
4. 讀 response
5. 釋放連接。無論執行方法是否成功,都必須釋放連接
6. 對得到後的內容進行處理
根據以上步驟,我們來編寫用GET方法來取得某網頁內容的代碼。
E. 請教HttpClient 讀取內容亂碼的問題
1)將接收的內容(參數)進行編碼
request.setCharacterEncodeing(String charset);
2)將要輸出的轉發的內容進行編碼
response.setContextType("text/html;charset=utf-8");
3)html表單中的數據會按照當前頁面來進行編碼。
<meta http-equiv="content-type" content="text/html;charset=utf-8;">
模擬消息頭content-type,讓瀏覽器以utf-8編碼打開頁面。
確保頁面將表單用指定的字元編碼進行編碼。
4)cookie
cookie的值只能是ascii字元,如果是中文,需要將中文轉換成ascii字元形式。
可以使用URLEncoder.encode()方法和URLDecoder.decode()方法來進行這種轉換。
5)在web.xml 中配置一個Spring 的編碼轉換過濾器就可以了.使用在非struts2框架開發:
org.springframework.web.filter.CharacterEncodingFilter
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
F. 如何用c語言實現http伺服器
//服務端簡易代碼如下:
#include<stdio.h>
#include<stdlib.h>
#include<err.h>
#include<event.h>
#include<evhttp.h>
voidhttp_handle(structevhttp_request*req,void*arg);/*HTTPRequestHandle*/
intmain(){
structevhttp*httpd;
event_init();
httpd=evhttp_start("0.0.0.0",2345);
if(httpd==NULL){
fprintf(stderr,"Error:Unabletolistenon%s:%d ");
exit(1);
}
evhttp_set_timeout(httpd,2000);
evhttp_set_gencb(httpd,http_handle,NULL);
event_dispatch();
evhttp_free(httpd);
return0;
}
voidhttp_handle(structevhttp_request*req,void*arg){
structevbuffer*buf;
buf=evbuffer_new();
/*Responsetheclient*/
evhttp_send_reply(req,HTTP_OK,"OK",buf);
//evbuffer_add_printf(buf,"%s","HTTPSQS_AUTH_FAILED");
/*Releasethememory*/
evbuffer_free(buf);
fprintf(stderr,"Send ");
}
編譯:編譯時把libevent的類庫中的.so文件和.h文件連接進來。
G. 如何在C++中使用HttpClient處理程序
程序暫停: 在C++里使用 #include getch(); 或者 #include getchar(); 在windows中,還可以使用 #include system("pause"); 如果單純想要查看結果,還可以使用sleep windows中 #include Sleep(int); 在linux中 #include sleep(int);
H. jsp-httpclient中url中帶中文怎麼解決
jsp-httpclient中url中帶中文的解決辦法:
在Servlet中 添加 req.setCharacterEncoding("UTF-8");
然後para=req.getParameter("title");取出參數。
在轉發的時候,設置參數GBK編碼:para = URLEncoder.encode(para, "GBK");
再使用HttpClient發送Get請求。這個時候就成功了。
在Servlet中接收參數的時候,必須指定req.setCharacterEncoding("參數編碼方式");這樣取出來的參數才不會亂碼,隨後對參數的處理才能成功。
I. httpclient和restclient有什麼區別
httpclient和restclient的區別:
HttpClient是個很不錯的開源框架,封裝了訪問http的請求頭,參數,內容體,響應等等。
HttpURLConnection是java的標准類,什麼都沒封裝,用起來太原始,不方便。 比如重訪問的自定義,以及一些高級功能等。