當前位置:編程學習大全網 - 源碼下載 - C#怎樣通過url調用接口

C#怎樣通過url調用接口

web 接口,常用的請求方式有兩種

GET

POST

public?static?class?Http

{

private?static?Encoding?GetEncoding(HttpWebResponse?response)

{

var?encodingText?=?response.ContentEncoding;

if?(string.IsNullOrEmpty(encodingText))

encodingText?=?"UTF-8";

return?Encoding.GetEncoding(encodingText);

}

private?static?string?JoinParam(IDictionary<string,?string>?input)

{

var?sb?=?new?StringBuilder();

using?(var?e?=?input.GetEnumerator())

{

if?(e.MoveNext())

{

var?key?=?HttpUtility.UrlEncode(e.Current.Key);

var?value?=?HttpUtility.UrlEncode(e.Current.Value);

sb.AppendFormat("{0}={1}",?key,?value);

while?(e.MoveNext())

{

key?=?HttpUtility.UrlEncode(e.Current.Key);

value?=?HttpUtility.UrlEncode(e.Current.Value);

sb.AppendFormat("&{0}={1}",?key,?value);

}

}

}

return?sb.ToString();

}

public?static?string?PostStream(string?url,?IDictionary<string,?string>?header?=?null,?Stream?stream?=?null,?Encoding?encoding?=?null)

{

var?request?=?(HttpWebRequest)WebRequest.Create(url);

request.Method?=?WebRequestMethods.Http.Post;

if?(header?!=?null)

{

foreach?(var?key?in?header.Keys)

{

var?value?=?header[key];

switch?(key)

{

case?"Content-Type":

request.ContentType?=?value;

break;

case?"Content-Length":

request.ContentLength?=?Convert.ToInt64(value);

break;

default:

request.Headers.Set(key,?value);

break;

}

}

}

if?(stream?!=?null)

{

request.ContentLength?=?stream.Length;

using?(var?rStream?=?request.GetRequestStream())

{

stream.CopyTo(rStream);

}

}

using?(var?response?=?(HttpWebResponse)request.GetResponse())

{

using?(var?rStream?=?response.GetResponseStream())

{

if?(encoding?==?null)

{

encoding?=?GetEncoding(response);

}

using?(var?reader?=?new?StreamReader(rStream,?encoding))

return?reader.ReadToEnd();

}

}

}

public?static?string?Post(string?url,?IDictionary<string,?string>?header?=?null,?IDictionary<string,?string>?input?=?null)

{

Stream?dst?=?null;

if?(input?!=?null)

{

var?str?=?JoinParam(input);

var?bytes?=?Encoding.UTF8.GetBytes(str);

dst?=?new?MemoryStream(bytes);

}

var?result?=?PostStream(url,?header,?dst);

dst?.Dispose();

return?result;

}

public?static?string?Get(string?url,?IDictionary<string,?string>?header?=?null,?IDictionary<string,?string>?input?=?null)

{

var?request?=?(HttpWebRequest)WebRequest.Create(url);

request.Method?=?WebRequestMethods.Http.Get;

if?(header?!=?null)

{

foreach?(var?key?in?header.Keys)

request.Headers[key]?=?header[key];

}

if?(input?!=?null)

{

url?+=?"?"?+?JoinParam(input);

}

using?(var?response?=?(HttpWebResponse)request.GetResponse())

{

using?(var?rStream?=?response.GetResponseStream())

{

var?encoding?=?GetEncoding(response);

using?(var?reader?=?new?StreamReader(rStream,?encoding))

return?reader.ReadToEnd();

}

}

}

}

提供了兩種方式的請求實現。

示例:

var?kvParam?=?new?Dictionary<string,?string>();

kvParam["name"]?=?"xxx";

kvParam["password"]?=?"xxx";

var?result?=?Http.Post("/login.php",?null,?kvParam);

  • 上一篇:node.js和php哪個簡單
  • 下一篇:將人民幣小寫金額轉換成大寫的vb代碼
  • copyright 2024編程學習大全網