http请求

1、http+json

public string PostHttp(string url, string body,string token)
{
try
{
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(url);
Request.ContentType = "application/json;charset=utf8";
Request.Headers.Add("Authorization", token);
Request.Timeout = 30 * 1000;
Request.Method = "POST";
byte[] btBodys = Encoding.GetEncoding("utf-8").GetBytes(body);
Request.ContentLength = btBodys.Length;
Request.GetRequestStream().Write(btBodys, 0, btBodys.Length);
using (HttpWebResponse httpWebResponse = (HttpWebResponse)Request.GetResponse())
{
StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
string responseContent = streamReader.ReadToEnd();
httpWebResponse.Close();
streamReader.Close();
Request.Abort();
return responseContent;
}
}
catch (Exception ex)
{

//这里记录日志
return "error" + ex.Message;

}
}

2、http form-data

public string HttpPost_formdata(string url,string token)
{
//获取id和key
//string ID = Appsettings.app("JinHePushData", "ID").ToString();//ID
//string KEY = Appsettings.app("JinHePushData", "KEY").ToString();//KEY
//string EncryptedString = ID + ":" + KEY;
//string base64 = "Basic " + EncodeBase64(EncryptedString);
string result = "";
try
{
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.AllowAutoRedirect = true;
request.Timeout = 20 * 1000;
request.ContentType = "application/x-www-form-urlencoded";
StringBuilder buffer = new StringBuilder();
buffer.AppendFormat("{0}={1}&", "grant_type", "client_credentials");
buffer.AppendFormat("{0}={1}", "scope", "write");
var byteArray = Encoding.Default.GetBytes(buffer.ToString());
request.ContentLength = byteArray.Length;
using (var newStream = request.GetRequestStream())
{
newStream.Write(byteArray, 0, byteArray.Length);
newStream.Close();
}
request.Headers.Add("Authorization", token);

var response = (HttpWebResponse)request.GetResponse();
var rspStream = response.GetResponseStream();
using (var reader = new StreamReader(rspStream, Encoding.UTF8))
{
result = reader.ReadToEnd();
rspStream.Close();
}
response.Close();
}
catch (Exception ex)
{
result = ex.Message.ToString();
}
return result;
}

3、form-data文件

public async Task<clsParkCommonResponse> UploadFileWithParamsAndHeaders(string url, string filePath, string wid, IReadOnlyDictionary<string, string> headers)
{
var res = new clsParkCommonResponse();

try
{
using (HttpClient _httpClient = new HttpClient())
{
var form = new MultipartFormDataContent();
// 添加文件
byte[] fileBytes = GetUrlMemoryStream(filePath);
var fileContent = new ByteArrayContent(fileBytes);
form.Add(fileContent, "uploadFile", Path.GetFileName(filePath));
Console.WriteLine(Path.GetFileName(filePath));
var sfdsf = Path.GetFileName(filePath);
// 添加参数
form.Add(new StringContent(wid), "wid");
// 添加请求头
foreach (var item in headers)
{
_httpClient.DefaultRequestHeaders.Add(item.Key, item.Value);
}
string headerjson = JsonConvert.SerializeObject(headers);
// 发送请求
var response = await _httpClient.PostAsync(url, form);
// 处理响应
if (response.IsSuccessStatusCode)
{
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine("接口返回:" + result);
res = JsonConvert.DeserializeObject<clsParkCommonResponse>(result);
}
else
{
//throw new HttpRequestException($"HTTP request failed with status code {response.StatusCode}");
}

};

}
catch (Exception ex)
{
Console.WriteLine(ex.Message.ToString());
return res;
}
return res;
}

//从远程地址获取文件字节流

private byte[] GetUrlMemoryStream(string path)
{

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(path);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();

List<byte> btlst = new List<byte>();
int b = responseStream.ReadByte();
while (b > -1)
{
btlst.Add((byte)b);
b = responseStream.ReadByte();
}
byte[] bts = btlst.ToArray();
return bts;
}

4、带账号密码的接口

public string httppost(string url, string data, string userName, string passWord)
{

string result = "";
try
{
string Username = userName;
string Password = passWord;
byte[] bs = Encoding.ASCII.GetBytes(data);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "Post";
request.CookieContainer = new CookieContainer();
request.ContentType = "application/json;";
request.ContentLength = bs.Length;
request.Timeout = 1000000;
using (Stream reqStream = request.GetRequestStream())
{
reqStream.Write(bs, 0, bs.Length);
}
//(1)设置请求Credentials
CredentialCache credentialCache = new CredentialCache();
credentialCache.Add(new Uri(url), "Basic", new NetworkCredential(userName, passWord));
request.Credentials = credentialCache;

//(2)设置Headers Authorization
request.Headers.Add("Authorization", "Basic" + Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Username}:{Password}")));

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
result = reader.ReadToEnd();

}
}
}
catch (Exception ex)
{
result = ex.Message.ToString();
}
return result;

}

posted @ 2023-04-11 11:01  半、枫  阅读(50)  评论(0)    收藏  举报