You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.7 KiB
C#
77 lines
2.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Text;
|
|
|
|
namespace POSV.Utils
|
|
{
|
|
public class RequestUtils
|
|
{
|
|
public static string Post(string url, SortedList<string, string> parameters)
|
|
{
|
|
var sb = new StringBuilder();
|
|
foreach (var item in parameters)
|
|
{
|
|
if (sb.ToString().Length != 0)
|
|
{
|
|
sb.Append("&");
|
|
}
|
|
var key = Uri.EscapeDataString(item.Key).Replace("%20", "+");
|
|
var value = Uri.EscapeDataString(item.Value).Replace("%20", "+");
|
|
sb.Append(key + "=" + value);
|
|
}
|
|
MemoryStream request = RequestUtils.Post(url, sb.ToString());
|
|
|
|
return System.Text.Encoding.UTF8.GetString(request.ToArray());
|
|
}
|
|
|
|
public static MemoryStream Post(string url, string data)
|
|
{
|
|
return Post(url, data, Encoding.UTF8);
|
|
}
|
|
|
|
public static MemoryStream Post(string url, string data, Encoding encoding)
|
|
{
|
|
return Post(url, data, 10000, Encoding.UTF8);
|
|
}
|
|
|
|
public static MemoryStream Post(string url, string data, int timeout, Encoding encoding)
|
|
{
|
|
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
|
|
webRequest.ContentType = "application/json";
|
|
webRequest.Method = "POST";
|
|
webRequest.Timeout = timeout;
|
|
WriteRequestStream(ref webRequest, data, encoding);
|
|
return GetResponseStream(ref webRequest);
|
|
}
|
|
|
|
private static void WriteRequestStream(ref HttpWebRequest webRequest, string data, Encoding encoding)
|
|
{
|
|
using (Stream requestStream = webRequest.GetRequestStream())
|
|
{
|
|
byte[] bArray = encoding.GetBytes(data);
|
|
requestStream.Write(bArray, 0, bArray.Length);
|
|
requestStream.Close();
|
|
}
|
|
}
|
|
|
|
private static MemoryStream GetResponseStream(ref HttpWebRequest webRequest)
|
|
{
|
|
using (WebResponse webResponse = webRequest.GetResponse())
|
|
{
|
|
Stream stream = webResponse.GetResponseStream();
|
|
MemoryStream memoryStream = new MemoryStream();
|
|
byte[] bs = new byte[256];
|
|
for (int j = stream.Read(bs, 0, (int)bs.Length); j > 0; j = stream.Read(bs, 0, (int)bs.Length))
|
|
{
|
|
memoryStream.Write(bs, 0, j);
|
|
}
|
|
stream.Close();
|
|
memoryStream.Position = (long)0;
|
|
return memoryStream;
|
|
}
|
|
}
|
|
}
|
|
} |