1. HttpClient和WebService的區別和介紹
HttpClient 是 Apache Jakarta Common 下的子項目,可以用來提供高效的、最新的、功能豐富的支持 HTTP 協議的客戶端編程工具包,並且它支持 HTTP 協議最新的版本和建議。
Web service是一個平台獨立的,低耦合的,自包含的、基於可編程的web的應用程序,可使用開放的XML(標准通用標記語言下的一個子集)標准來描述、發布、發現、協調和配置這些應用程序,用於開發分布式的互操作的應用程序。
Web Service技術, 能使得運行在不同機器上的不同應用無須藉助附加的、專門的第三方軟體或硬體, 就可相互交換數據或集成。依據Web Service規范實施的應用之間, 無論它們所使用的語言、 平台或內部協議是什麼, 都可以相互交換數據。Web Service是自描述、 自包含的可用網路模塊, 可以執行具體的業務功能。Web Service也很容易部署, 因為它們基於一些常規的產業標准以及已有的一些技術,諸如標准通用標記語言下的子集XML、HTTP。Web Service減少了應用介面的花費。Web Service為整個企業甚至多個組織之間的業務流程的集成提供了一個通用機制。
2. 怎麼把httpclient定義為web請求
private void getMobileCodeInfo(){
try {
final String SERVER_URL = "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo"; // 定義需要獲取的內容來源地址
HttpPost request = new HttpPost(SERVER_URL);
List<BasicNameValuePair> params = new ArrayList();
params.add(new BasicNameValuePair("mobileCode", "136370628")); //(注意這里的號碼必須大於6位)
params.add(new BasicNameValuePair("userId", ""));
request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
HttpResponse httpResponse = new DefaultHttpClient().execute(request);
if (httpResponse.getStatusLine().getStatusCode() != 404)
{
String result = EntityUtils.toString(httpResponse.getEntity());
System.out.println(result);
}
} catch (Exception e) {
Log.e("eee", ""+e);
e.printStackTrace();
}
}
3. web前端怎麼調用api介面
1、首先需要確定第三方的介面的基本信息:地址、請求方式,參數、返回值,介面模式這里第三方的介面是restful風格的,採用get請求。
4. 如何實現HttpClient + Web Api架構下數據的壓縮
HttpClient + Web Api實現Restful服務
下面實現了提交一個對象json數據到伺服器上請求創建操作,對應Http的POST請求。
1) 准備需要傳遞給WebAPI的參數
2) 然後用System.Net.Http.StringContent把它打個包
3) 然後設置一下ContentType
4) 通過Http Post調用WebAPI得到返回結果
5) 最後將Json格式返回的結果反序列化為強類型
5. C#用httpclient模擬post到web網站上
實例化下面的類,設置相關屬性(url,method)等,調用call就好
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography.X509Certificates;
using System.Net.Security;
using System.IO;
using System.Net;
using System.Xml;
namespace xxxu
{
public class XXXUHttpClient
{
//請求內容,無論post和get,都用get方式提供
private string reqContent;
//應答內容
private string resContent;
//請求方法
private string method;
//錯誤信息
private string errInfo;
//證書文件
private string certFile;
//證書密碼
private string certPasswd;
//ca證書文件
private string caFile;
//超時時間,以秒為單位
private int timeOut;
//http應答編碼
private int responseCode;
//字元編碼
private string charset;
public HuizeHttpClient()
{
this.caFile = "";
this.certFile = "";
this.certPasswd = "";
this.reqContent = "";
this.resContent = "";
this.method = "POST";
this.errInfo = "";
this.timeOut = 1 * 60;//5分鍾
this.responseCode = 0;
setCharset(System.Web.HttpContext.Current.Request.ContentEncoding.BodyName);
}
//設置請求內容
public void setReqContent(string reqContent)
{
this.reqContent = reqContent;
}
//獲取結果內容
public string getResContent()
{
return this.resContent;
}
//設置請求方法post或者get
public void setMethod(string method)
{
this.method = method;
}
//獲取錯誤信息
public string getErrInfo()
{
return this.errInfo;
}
//設置證書信息
public void setCertInfo(string certFile, string certPasswd)
{
this.certFile = certFile;
this.certPasswd = certPasswd;
}
//設置ca
public void setCaInfo(string caFile)
{
this.caFile = caFile;
}
//設置超時時間,以秒為單位
public void setTimeOut(int timeOut)
{
this.timeOut = timeOut;
}
//獲取http狀態碼
public int getResponseCode()
{
return this.responseCode;
}
public void setCharset(string charset)
{
if (string.IsNullOrEmpty(charset))
{
this.charset = "UTF-8";
}
this.charset = charset;
}
//驗證伺服器證書
public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{
return true;
}
//執行http調用
public bool call()
{
StreamReader sr = null;
HttpWebResponse wr = null;
HttpWebRequest hp = null;
try
{
string postData = null;
if (this.method.ToUpper() == "POST")
{
string[] sArray = System.Text.RegularExpressions.Regex.Split(this.reqContent, "\\?");
hp = (HttpWebRequest)WebRequest.Create(sArray[0]);
if (sArray.Length >= 2)
{
postData = sArray[1];
}
}
else
{
hp = (HttpWebRequest)WebRequest.Create(this.reqContent);
}
ServicePointManager. = new System.Net.Security.(CheckValidationResult);
if (this.certFile != "")
{
hp.ClientCertificates.Add(new X509Certificate2(this.certFile, this.certPasswd));
}
hp.Timeout = this.timeOut * 1000;
System.Text.Encoding encoding = System.Text.Encoding.GetEncoding(this.charset);
if (postData != null)
{
byte[] data = encoding.GetBytes(postData);
hp.Method = "POST";
hp.ContentType = "application/x-www-form-urlencoded";
hp.ContentLength = data.Length;
Stream ws = hp.GetRequestStream();
// 發送數據
ws.Write(data, 0, data.Length);
ws.Close();
}
wr = (HttpWebResponse)hp.GetResponse();
sr = new StreamReader(wr.GetResponseStream(), encoding);
this.resContent = sr.ReadToEnd();
sr.Close();
wr.Close();
}
catch (Exception exp)
{
this.errInfo += exp.Message;
if (wr != null)
{
this.responseCode = Convert.ToInt32(wr.StatusCode);
}
return false;
}
this.responseCode = Convert.ToInt32(wr.StatusCode);
return true;
}
}
}
6. web伺服器 接收文件 java
通過 request.getInputStream() 得到一個輸入流 把輸入流中的數據 存到本地文件中
7. web集群伺服器通過Httpclient.executeMethod方式去請求其他網站的數據,數據沒有返回到發送請求的機器
不知道,關注一下,希望搞清楚分享一下
8. HttpClient訪問WebSerivice服務 認證和post數據 不能同時進行么
你好,很高興為你解答,
兩種都是提交方式,Post雖說可以這么寫,但是,也會有【HttpPost】註解的方式,
所以, 不能。
~如果你認可我的回答,請及時點擊【採納為滿意回答】按鈕
~~手機提問的朋友在客戶端右上角評價點【滿意】即可。
~你的採納是我前進的動力
~~O(∩_∩)O,記得好評和採納,互相幫助,謝謝。
9. 如何使用HttpClient
一般的情況下我們都是使用IE或者Navigator瀏覽器來訪問一個WEB伺服器,用來瀏覽頁面查看信息或者提交一些數據等等。所訪問的這些頁面有的僅僅是一些普通的頁面,有的需要用戶登錄後方可使用,或者需要認證以及是一些通過加密方式傳輸,例如HTTPS。
目前我們使用的瀏覽器處理這些情況都不會構成問題。不過你可能在某些時候需要通過程序來訪問這樣的一些頁面,比如從別人的網頁中「偷」一些數據;利用某些站點提供的頁面來完成某種功能,例如說我們想知道某個手機號碼的歸屬地而我們自己又沒有這樣的數據,因此只好藉助其他公司已有的網站來完成這個功能,這個時候我們需要向網頁提交手機號碼並從返回的頁面中解析出我們想要的數據來。如果對方僅僅是一個很簡單的頁面,那我們的程序會很簡單,本文也就沒有必要大張旗鼓的在這里浪費口舌。
但是考慮到一些服務授權的問題,很多公司提供的頁面往往並不是可以通過一個簡單的URL就可以訪問的,而必須經過注冊然後登錄後方可使用提供服務的頁面,這個時候就涉及到COOKIE問題的處理。我們知道目前流行的動態網頁技術例如ASP、JSP無不是通過COOKIE來處理會話信息的。為了使我們的程序能使用別人所提供的服務頁面,就要求程序首先登錄後再訪問服務頁面,這過程就需要自行處理cookie,想想當你用java.net.HttpURLConnection來完成這些功能時是多麼恐怖的事情啊!況且這僅僅是我們所說的頑固的WEB伺服器中的一個很常見的「頑固」!
再有如通過HTTP來上傳文件呢?不需要頭疼,這些問題有了「它」就很容易解決了!