C# 發起普通http請求
{
private static NetHelper _instance = new NetHelper();
public static NetHelper Instance
{
get
{
return _instance;
}
}
/// <summary>
/// POST請求
/// </summary>
/// <param name="url">要請求的地址</param>
/// <param name="parameters">要傳遞的引數</param>
/// <param name="timeout">預設超時時間設定</param>
/// <returns></returns>
public string DoPost(string url, IDictionary<string, string> parameters, int timeout = 20000)
{
try
{
HttpWebRequest request = this.GetWebRequest(url, "POST", timeout);
byte[] buffer = Encoding.UTF8.GetBytes(this.BuildQuery(parameters));
request.ContentLength = buffer.Length;
Stream stream = request.GetRequestStream();
stream.Write(buffer, 0, buffer.Length);
stream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Encoding encoding = this.GetEncoding(response.CharacterSet);
return GetResponseAsString(response, encoding);
}
catch (Exception ex)
{
}
return string.Empty;
}
/// <summary>
/// GET請求
/// </summary>
/// <param name="url">要請求的地址</param>
/// <param name="parameters">要傳遞的引數</param>
/// <param name="timeout">預設超時時間</param>
/// <returns></returns>
public string DoGet(string url, IDictionary<string, string> parameters, int timeout = 20000)
{
try
{
if (parameters != null && parameters.Count > 0)
{
if (url.Contains("?"))
{
url = url + "&" + BuildQuery(parameters);
}
else
{
url = url + "?" + BuildQuery(parameters);
}
}
HttpWebRequest request = GetWebRequest(url, "GET", timeout);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//Encoding encoding = this.GetEncoding(response.CharacterSet);
Encoding encoding = Encoding.UTF8;
return GetResponseAsString(response, encoding);
}
catch (Exception ex)
{
}
return string.Empty;
}
/// post 請求
/// </summary>
/// <param name="url">請求地址</param>
/// <param name="data">地址後面的引數</param>
/// <param name="content">post資料內容</param>
/// <returns></returns>
public string RequestPost(string url, string content, bool isJson = false)
{
string result = "";
byte[] bytes = Encoding.UTF8.GetBytes(content);
HttpWebRequest request = GetHttpWebRequest(url, bytes.Length, isJson);
using (Stream stream = request.GetRequestStream())
{
stream.Write(bytes, 0, bytes.Length);
}
using (StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream(), Encoding.UTF8))
{
result = reader.ReadToEnd().ToString();
}
return result;
}
private HttpWebRequest GetWebRequest(string url, string method, int timeout = 20000)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = timeout;
request.ServicePoint.Expect100Continue = false;
request.KeepAlive = true;
request.Method = method;
request.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
request.Headers.Add("content", "text/html; charset=utf-8");
//request.UserAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Touch)";
return request;
}
/// <summary>
/// 組裝普通文字請求引數。
/// </summary>
/// <param name="parameters">Key-Value形式請求引數字典</param>
/// <returns>URL編碼後的請求資料</returns>
private string BuildQuery(IDictionary<string, string> parameters)
{
if (null == parameters)
return "";
StringBuilder data = new StringBuilder();
bool flag = false;
IEnumerator<KeyValuePair<string, string>> temp = parameters.GetEnumerator();
while (temp.MoveNext())
{
string name = temp.Current.Key;
string value = temp.Current.Value;
// 忽略引數名或引數值為空的引數
if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(value))
{
if (flag)
{
data.Append("&");
}
data.Append(name);
data.Append("=");
data.Append(System.Web.HttpUtility.UrlEncode(value, Encoding.UTF8));
flag = true;
}
}
return data.ToString();
}
private Encoding GetEncoding(string character)
{
if (string.IsNullOrEmpty(character))
return Encoding.UTF8;
return Encoding.GetEncoding(character);
}
/// <summary>
/// 把響應流轉換為文字。
/// </summary>
/// <param name="rsp">響應流物件</param>
/// <param name="encoding">編碼方式</param>
/// <returns>響應文字</returns>
public string GetResponseAsString(HttpWebResponse rsp, Encoding encoding)
{
Stream stream = null;
StreamReader reader = null;
string result = string.Empty;
try
{
// 以字元流的方式讀取HTTP響應
stream = rsp.GetResponseStream();
reader = new StreamReader(stream, encoding);
result = reader.ReadToEnd();
}
finally
{
// 釋放資源
if (reader != null) reader.Close();
if (stream != null) stream.Close();
if (rsp != null) rsp.Close();
}
return result;
}
}
相關推薦
C# 發起普通http請求
public class NetHelper { private static NetHelper _instance = new NetHelper(); public static NetHelper Instance
使用CURL檢測Clinet側發起的HTTP請求各階段時間
使用curl檢測clinet側發起的http請求各階段時間前言上周,我方的一個客戶反饋,訪問我們的接口,平均耗時在2s以上。但是我方對請求進入,和請求返回,整個過程都有監控,我方的耗時基本在50ms以內,非常快。後來了解到,客戶從廣東訪問到我方上海,公網來訪問我方。那麽就建議去檢測,DNS耗時,TCP建立的耗
C# 後臺處理http請求
處理 IT 方式 span 亂碼 bottom AD bytearray ret using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using Syst
如何使用事務碼SMICM分析ABAP程式碼發起的HTTP請求的錯誤ICM_HTTP_SSL_PEER_CERT_UNTRUSTED
當我用CL_HTTP_CLIENT往一個外網的url發請求時,遇到錯誤:ICM_HTTP_SSL_PEER_CERT_UNTRUSTED 錯誤是從這段ABAP程式碼裡丟擲來的: CALL METHOD lo_http_client->get_last_error IMPORTING code
AJAX請求和普通HTTP請求區別(postman分析)
兩者本質區別: AJAX通XMLHttpRequest物件請求伺服器伺服器接受請求返資料實現重新整理互動 普通http請求通httpRequest象請求伺服器接受請求返資料需要頁面重新整理 AJAX請求頭會多一個x-requested-with引數,值為XMLHttpRequest &n
如何使用事務碼SMICM分析ABAP程式碼發起的HTTP請求的錯誤
當我用CL_HTTP_CLIENT往一個外網的url發請求時,遇到錯誤:ICM_HTTP_SSL_PEER_CERT_UNTRUSTED 錯誤是從這段ABAP程式碼裡丟擲來的: CALL METHOD lo_http_client->get_last_er
C socket 傳送HTTP請求
HTTP請求頭部樣例: GET http://www.baidu.com/ HTTP/1.1 Accept: html/text Host: 220.181.6.175:80 Connection: Close 這是一個請求百度頁面的頭部。 屬性和值的命名中間用:和空格隔
純C++實現的HTTP請求封裝(POST/GET)
純C++實現的HTTP請求(POST/GET),支援windows和linux, 進行簡單的封裝, 方便呼叫。實現如下: #include "HttpConnect.h" #ifdef WIN32 #pragma comment(lib,"ws2_32.l
C#後臺傳送HTTP請求
HttpResponse 1.涵蓋POST,GET方法 using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; usi
C# http請求帶請求頭部分
reat ont source sys data ucc his content xmlhttp 使用js+Ajax請求API接口數據-帶請求頭方式直接上代碼前臺調用:<script type="text/javascript"> functio
C# HTTP請求GET,POST
地址 ont odi lec stat 重定向 htm 封裝 true 轉自原文 【C#】HTTP請求GET,POST HTTP定義了與服務器交互的不同方法,基本方法有GET,POST,PUT,DELETE,分別對於查,該,增,刪。一般情況下我們只用到GET和POS
C/C++使用libcurl庫發送http請求(get和post可以用於請求html信息,也可以請求xml和json等串)
網絡連接 get 編譯 eas views vs2015 return tar linux C++要實現http網絡連接,需要借助第三方庫,libcurl使用起來還是很方便的 環境:win32 + vs2015 如果要在Linux下使用,基本同理 1,下載
網絡通信第一課 C++封裝HTTP請求報文說明
c++ http post一個HTTP請求報文由請求行(request line)、請求頭部(header)、空行和請求數據4個部分組成使用C++組裝上述報文 boost::asio::streambuf request; std::ostream request_stream(&request);
C# 發送Http協議 模擬 Post Get請求
head log cnblogs cep bsp empty read ram color 1.參數 paramsValue的格式 要和 Reques.ContentType一致, 如果 contentype "application/x-www-form-urlenco
C#模擬HTTP請求並發送二進制
keep lose type response ica con new urn for public static String Submit(String methodName) { string postData = "this is post data";/
使用libcurl的包裝庫cpr發起http請求
cout main title pow dsa ext lan text post cpr GitHub地址https://github.com/whoshuu/cpr 簡單示例:cpr_http_request.cpp #include <iostream>
用Java發起HTTP請求與獲取狀態碼(含狀態碼列表)
滿足 null timeout etc default 語法 訪問 網頁 trace 轉自:https://blog.csdn.net/xyw591238/article/details/51072697 在使用Java請求Web程序比如訪問WebService接口時,通
C# 如何發送Http請求
quest string uget class nuget bin ken pos ict HttpSender是一個用來發送Http消息的輕量庫,使用非常簡單 使用 Nuget,搜索 HttpSender 就能找到 命名空間是HttpSender,類名是Sender 方法
控制檯實現js發起http請求 —— AJAX 例項解析
此處以一個簡單的測試使用者登入介面為例。。。 如果一個網站的登入模組設計的很簡單的話,可以通過不斷髮起請求去測試一個賬號的密碼。。。 // 第一步:建立 XMLHttpRequest 物件 var xmlhttp; if (window.XMLHttpRequest) {// code
Jmeter,使用【外部檔案資料】作為【請求資料】發起HTTP請求
目錄 前言 操作 (一)新增執行緒組 (二)新增HTTP請求 (三)新增HTTP資訊頭管理器 (四)準備資料檔案 (五)新增CSV資料檔案設定 (五)設定HTTP請求的入參為外部資料變數(按列) (六)新增察看結果樹 (七)新增聚合報告 (八)修改執行緒組