• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            httpclientpost

            更新時間:2023-02-28 23:42:56 閱讀: 評論:0

            HttpClient使用指南——POST請求

            1.創建一個請求客戶端:HttpClients.createDefault(),用來實際發起調用post請求,可以類比成瀏覽器。

            2.組裝表單請求數據:因需要傳遞文件,所以通過 MultipartEntityBuilder 構造器組裝表單實體請求數據。

            2.1 設置mode為 HttpMultipartMode.RFC6532 (必須);

            2.2 設置字符集為UTF-8(必須);

            2.3 通過 addBinaryBody 追加文件;

            2.4 通過 addTextBody 追加文本參數,若文本為中文則必須指定字符集為GBK或者UTF-8。

            3.創建一個post請求:通過請求構造器 RequestBuilder 的post方法構造一個post請求,通過 tEntity 方法向post請求里放置請求參數,通過addHeader方法向post請求里追加請求頭信息,請求頭信息比如雙方約定的token,通過build方法返回請求對象。

            4.發起post請求并獲得響應:通過請求客戶端的execute方法執行請求并獲得返回值請求響應。

            5.獲取響應結果:獲取響應對象的實體HttpEntity,通過 EntityUtils toString 方法將實體轉成字符串,這里一般還要指定字符集,尤其是當實體里沒有指定字符集時。

            注意 MultipartEntityBuilder 必須指定 mode HttpMultipartMode.RFC6532 ,且必須設置字符集為 UTF-8 否則若傳遞的文件名包含中文,則 文件名亂碼 ;對于普通的文本參數,中文指定UTF-8或者GBK接收方均未發現亂碼情況; 接收方 需要將請求轉為 MultipartHttpServetRequest 方可獲取到文件,示例代碼如下:


            怎么用httpclient發送post請求

            有時候我們在發送HTTP請求的時候會使用到POST方式,如果是傳送普通的表單數據那將很方便,直接將參數到一個Key-value形式的Map
            中即可。但是如果我們需要傳送的參數是Json格式的,會稍微有點麻煩,我們可以使用HttpClient類庫提供的功能來實現這個需求。假設我們需要發
            送的數據是:

            {
            "blog": "http://www.iteblog.com",
            "Author": "iteblog"
            }

            我們可以通過JSONObject夠著Json:

            JSONObject jsonObject = new JSONObject();

            jsonObject.put("blog", "http://www.iteblog.com");
            jsonObject.put("Author", "iteblog");

            如果需要使用Post方式來發送這個數據,我們可以如下實現:

            private HttpMethodBa createMethod(String url, int timeout) {
            PostMethod method = null;
            try {
            method = new PostMethod(url);
            JSONObject jsonObject = new JSONObject();

            jsonObject.put("blog", "http://www.iteblog.com");
            jsonObject.put("Author", "iteblog");

            String transJson = jsonObject.toString();
            RequestEntity = new StringRequestEntity(transJson, "application/json", "UTF-8");
            method.tRequestEntity();
            //使用系統提供的默認的恢復策略
            method.getParams().tParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
            //設置超時的時間
            method.getParams().tParameter(HttpMethodParams.SO_TIMEOUT, timeout);
            } catch (IllegalArgumentException e) {
            logger.error("非法的URL:{}", url);
            } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            }

            return method;
            }

              我們通過StringRequestEntity來構造請求實體,在這里,StringRequestEntity將接收三個參數,如下:

            public StringRequestEntity(String content, String contentType, String chart)
              throws UnsupportedEncodingException

              其中參數content就是我們需要傳輸的數據;contentType是傳送數據的格式,因為我們的數據格式是json的,所以contentType必須填寫application/json(更多的contentType可以參見《HTTP Content-Type常用一覽表》);chart是字符集編碼。

              然后我們再通過HttpClient對象的executeMethod方法來執行:

            int statusCode = httpClient.executeMethod(getMethod);
            //只要在獲取源碼中,服務器返回的不是200代碼,則統一認為抓取源碼失敗,返回null。
            if (statusCode != HttpStatus.SC_OK) {
            logger.error("Method failed: " + getMethod.getStatusLine() + "\tstatusCode: " + statusCode);
            return null;
            }

            pom.xml文件的關鍵內容

            <dependencies>
            <!--網絡爬蟲-->
            <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>3.1</version>
            </dependency>

            <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.3.1</version>
            </dependency>

            <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>14.0.1</version>
            </dependency>

            <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20140107</version>
            </dependency>
            </dependencies>

            C#怎么使用HttpClient來Post數據

            對HttpWebRespon獲取的HTML進行文字編碼轉換,使之不會出現亂碼; 自動在Session間保持Cookie,Referer等相關信息; 模擬HTML表單提交; 向服務器上傳文件; 對二進制的資源,直接獲取返回的字節數組(byte[]),或者保存為文件 為了解決這些問題,我開發了HttpClient類.下面是使用的方法: 獲取編碼轉換后的字符串 HttpClient client=new HttpClient(url); string html=client.GetString(); GetString()函數內部會查找Http Headers, 以及HTML的Meta標簽,試圖找出獲取的內容的編碼信息.如果都找不到,它會使用client.DefaultEncoding, 這個屬性默認為utf-8, 也可以手動設置. 自動保持Cookie, Referer HttpClient client=new HttpClient(url1, null, true); string html1=client.GetString(); client.Url=url2; string html2=client.GetString(); 這里HttpClient的第三個參數,keepContext設置為真時,HttpClient會自動記錄每次交互時服務器對Cookies進行的操作,同時會以前一次請求的Url為Referer.在這個例子里,獲取html2時,會把url1作為Referer, 同時會向服務器傳遞在獲取html1時服務器設置的Cookies. 當然,你也可以在構造HttpClient時直接提供第一次請求要發出的Cookies與Referer: HttpClient client=new HttpClient(url, new WebContext(cookies, referer), true); 或者,在使用過程中隨時修改這些信息: client.Context.Cookies=cookies; client.Context.referer=referer; 模擬HTML表單提交 HttpClient client=new HttpClient(url); client.PostingData.Add(fieldName1, filedValue1); client.PostingData.Add(fieldName2, fieldValue2); string html=client.GetString(); 上面的代碼相當于提交了一個有兩個input的表單. 在PostingData非空,或者附加了要上傳的文件時(請看下面的上傳和文件), HttpClient會自動把HttpVerb改成POST, 并將相應的信息附加到Request上. 向服務器上傳文件 HttpClient client=new HttpClient(url); client.AttachFile(fileName, fieldName); client.AttachFile(byteArray, fileName, fieldName); string html=client.GetString(); 這里面的fieldName相當于<input type="file" name="fieldName" />里的fieldName. fileName當然就是你想要上傳的文件路徑了. 你也可以直接提供一個byte[] 作為文件內容, 但即使如此,你也必須提供一個文件名,以滿足HTTP規范的要求. 不同的返回形式 字符串: string html = client.GetString(); 流: Stream stream = client.GetStream(); 字節數組: byte[] data = client.GetBytes(); 保存到文件: client.SaveAsFile(fileName); 或者,你也可以直接操作HttpWebRespon: HttpWebRespon res = client.GetRespon(); 每調用一次上述任何一個方法,都會導致發出一個HTTP Request, 也就是說,你不能同時得到某個Respon的兩種返回形式. 另外,調用后它們任意一個之后,你可以通過client.ResponHeaders來獲取服務器返回的HTTP頭. 下載資源的指定部分(用于斷點續傳,多線程下載) HttpClient client=new HttpClient(url); //發出HEAD請求,獲取資源長度 int length=client.HeadContentLength(); //只獲取后一半內容 client.StartPoint=length/2; byte[] data=client.GetBytes(); HeadContentLength()只會發出HTTP HEAD請求.根據HTTP協議, HEAD與GET的作用等同, 但是,只返回HTTP頭,而不返回資源主體內容. 也就是說,用這個方法,你沒法獲取一個需要通過POST才能得到的資源的長度,如果你確實有這樣的需求,建議你可以通過GetRespon(),然后從ResponHeader里獲取Content-Length.

            httpclient中post參數設置

            // post Sent cookie 這個Post 發送去的Cookie
            HttpPost httpPost = new HttpPost(uri)
            httpPost.addHeader("Cookie", "ONE_VER=1_0");

            //下面是發送的實體內容。發出去的是被轉義的內容,如果是不轉義發送,我也不知道怎么發,請高手指教。
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("實體內容", ""));

            //下面是返回內容
            CloableHttpRespon respon = httpclient.execute(httpPost);
            try{
            //要運行內容,如果要處理接收的內容,請在這里寫。

            } finally {
            respon.clo();

            }

            C#怎么使用HttpClient來Post數據

            public static string PostRequest(string url, Encoding encoding, Dictionary<string, object> input = null)
            {
            var request = WebRequest.Create(new Uri(url));
            request.Method = System.Net.WebRequestMethods.Http.Post;
            request.ContentType = "application/x-www-form-urlencoded";
            if (input != null)
            {
            var builder = new StringBuilder();
            foreach (var item in input)
            {
            var value = HttpUtility.UrlEncode(item.Value.ToString(), encoding);
            builder.AppendFormat("{0}={1}&", item.Key, value);
            }
            var bytesForArray = encoding.GetBytes(builder.ToString());
            request.ContentLength = bytesForArray.Length;
            var stream = request.GetRequestStream();
            stream.Write(bytesForArray, 0, bytesForArray.Length);
            stream.Clo();
            }
            var respon = request.GetRespon();
            var list = new List<byte>();
            var buffer = new byte[1024];
            int len = 0;
            var rStream = respon.GetResponStream();
            while ((len = rStream.Read(buffer, 0, buffer.Length)) > 0)
            {
            list.AddRange(buffer.Take(len));
            }
            respon.Clo();
            return encoding.GetString(list.ToArray());
            }

            如何使用httpclient進行post請求

            http請求傳遞的都是字符串。這種情況一般使用xml為信息載體。把java類轉成xml, client得到xml再轉成java類。 UrDTO ur = new UrDTO(); ...//填充ur XStream xstream = new XStream();//使用xstream轉換pojo和xml字符串 // HttpPost連接...

            本文發布于:2023-02-28 19:07:00,感謝您對本站的認可!

            本文鏈接:http://m.newhan.cn/zhishi/a/167759897652163.html

            版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。

            本文word下載地址:httpclientpost.doc

            本文 PDF 下載地址:httpclientpost.pdf

            標簽:httpclientpost
            相關文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網旗下知識大全大全欄目是一個全百科類寶庫! 優秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 国产三级精品三级| 欧美肥婆性猛交xxxx| 中文字幕无码白丝袜| 视频日本一区二区三区| 日韩黄色av一区二区三区| 久久精品国产最新地址| 日韩精品在线观看一二区| 欧美熟妇乱子伦XX视频| 国产中文字幕在线精品| 中文字幕在线亚洲日韩6页| 韩国一级毛片中文字幕| 久久99国产精品久久99软件| 久久亚洲精品国产精品| 在线观看91精品国产不卡| 欧美寡妇xxxx黑人猛交| 熟女视频一区二区三区嫩草| 亚洲中文字幕国产综合| 亚洲精品区午夜亚洲精品区| WWW丫丫国产成人精品| 久久精品中文字幕极品| 中文字幕乱码亚洲无线| 亚洲国产成人久久综合区| 中文字幕国产精品av| 色婷婷久久综合中文久久一本| 免费国产好深啊好涨好硬视频 | 精品乱人伦一区二区三区| 色综合久久综合久鬼色88| 在线播放亚洲成人av| 国产精品+日韩精品+在线播放| 国产性猛交xxxx乱大交| 最新国产精品精品视频| 久久久久久久久毛片精品| 国产午夜精品福利91| 国产精品久久久久久久专区| 国产无遮挡又黄又爽不要vip软件| 中文字幕精品亚洲二区| 亚洲日产韩国一二三四区| 国产一区二区不卡精品视频| 欧美成本人视频免费播放| 亚洲国产成熟视频在线多多| 日本熟妇色一本在线观看|