C 客戶端傳送http請求與伺服器通訊

2021-07-12 04:03:30 字數 1914 閱讀 1382

本文介紹了如何使用c#,通過httpwebrequest方法,向服務端傳送get,post,put和delete請求

在客戶端,通過httpwebrequest方法,向服務端傳送get,post,put和delete請求,但是由於服務端的接收引數不同,以及在具體請求下有稍微的不同,故分為以下幾種情況(本文所有**均為底層介面的形式給出,可以直接被上層具體方法呼叫)

get請求接收引數的方式通常均為@requestparam,此時,請求引數實際上是以 「url?param1=xx¶m2=xx」的形式傳遞的,所以**如下

//url為請求的**,param引數為需要查詢的條件(服務端接收的引數,沒有則為null)

//返回該次請求的響應

public

string

get(string url,dictionaryparam)

url = url.substring(0, url.length - 1);

}

httpwebrequest request = webrequest.create(url) as httpwebrequest;//建立請求

request.method = "get"; //請求方法為get

httpwebresponse res; //定義返回的response

try

catch (webexception ex)

streamreader sr = new streamreader(res.getresponsestream(), encoding.utf8);

string content = sr.readtoend(); //響應轉化為string字串

return content;

}

當在post或者put請求以@requestparam接收引數時,實際提交引數的形式是類似於表單提交,這種情況下,每乙個提交的引數前都需要新增boundary,用於將不同的引數分開,具體的提交方式可以參考我的另一篇文章:c#上傳檔案到服務端

對於post請求,除非上傳檔案的特殊情況,否則我們推薦服務端以requestbody形式接收引數,因為在需要接受的引數較多時,**可以更加簡潔,並且不再需要後期增加接收的引數,body即包含了乙個物件所有的屬性。

言歸正傳,這種情況的處理是最理想的,只需要將需要提交的引數以json的方式提交即可,**如下:

//url為請求的**,param為需要傳遞的引數

//返回服務端的額響應

public

string

post(string url, dictionaryparam)

}string jsonstring = json.tostring();//獲得引數的json字串

byte jsonbyte = encoding.utf8.getbytes(jsonstring);

stream poststream = request.getrequeststream();

poststream.write(jsonbyte, 0, jsonbyte.length);

poststream.close();

//傳送請求並獲取相應回應資料

string content = sr.readtoend(); //獲得響應字串

nodejs使用http客戶端傳送請求

這裡使用乙個第三方模組,needle,其使用方式比nodejs自帶的http模組好用。package.json依賴 dependencies 在檔案頭部引用模組 const needle require needle 請求引數,json格式 const allparams needle.reques...

HTTP客戶端傳送Post和Get請求

1 傳送請求 通過request物件傳送請求 建立request物件 設定request引數 request.method post request.contentlength encoding.utf8.getbytecount postdatastr request.cookiecontaine...

C 服務端與客戶端

c 服務端與客戶端連線實現的由來 那麼既然乙個伺服器端口可以應對多個客戶端連線,那麼接下來我們就看一下,如何讓多個客戶端與服務端連線。如同我們上面所說的,乙個tcpclient就是乙個socket,所以我們只要建立多個tcpclient,然後再呼叫connect 方法就可以了 c 服務端與客戶端連線...