1 using System;
2 using System.Collections.Generic;
3 using System.IO;
4 using System.Linq;
5 using System.Net;
6 using System.Text;
7 using System.Threading.Tasks;
8
9 namespace ClientTest
10 {
11 class BasicClient
12 {
13 public string SendRequest(string url, string method, string auth, string reqParams)
14 {
15 //这是发送Http请求的函数,可根据自己内部的写法改造
16 HttpWebRequest myReq = null;
17 HttpWebResponse response = null;
18 string result = string.Empty;
19 try
20 {
21 myReq = (HttpWebRequest)WebRequest.Create(url);
22 myReq.Method = method;
23 myReq.ContentType = "application/json;";
24 myReq.KeepAlive = false;
25
26 //basic 验证下面这句话不能少
27 if (!String.IsNullOrEmpty(auth))
28 {
29 myReq.Headers.Add("Authorization", "Basic " + auth);
30 }
31
32 if (method == "POST" || method == "PUT")
33 {
34 byte[] bs = Encoding.UTF8.GetBytes(reqParams);
35 myReq.ContentLength = bs.Length;
36 using (Stream reqStream = myReq.GetRequestStream())
37 {
38 reqStream.Write(bs, 0, bs.Length);
39 reqStream.Close();
40 }
41 }
42
43 response = (HttpWebResponse)myReq.GetResponse();
44 HttpStatusCode statusCode = response.StatusCode;
45 if (Equals(response.StatusCode, HttpStatusCode.OK))
46 {
47 using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
48 {
49 result = reader.ReadToEnd();
50 }
51 }
52 }
53 catch (WebException e)
54 {
55 if (e.Status == WebExceptionStatus.ProtocolError)
56 {
57 HttpStatusCode errorCode = ((HttpWebResponse)e.Response).StatusCode;
58 string statusDescription = ((HttpWebResponse)e.Response).StatusDescription;
59 using (StreamReader sr = new StreamReader(((HttpWebResponse)e.Response).GetResponseStream(), Encoding.UTF8))
60 {
61 result = sr.ReadToEnd();
62 }
63 }
64 else
65 {
66 result = e.Message;
67 }
68 }
69 finally
70 {
71 if (response != null)
72 {
73 response.Close();
74 }
75 if (myReq != null)
76 {
77 myReq.Abort();
78 }
79 }
80
81 return result;
82 }
83
84 public string sendHttpRequest(string url, string reqparam, string method = "POST")
85 {
86 string auth = Base64Encode("key:secret");
87 return SendRequest(url, method, auth, reqparam);
88 }
89
90 private string Base64Encode(string value)
91 {
92 byte[] bytes = Encoding.Default.GetBytes(value);
93 return Convert.ToBase64String(bytes);
94 }
95 }
96 }