Я пытаюсь реализовать пост HTTP-вызов через ASP C #, используя API, который мне дали.API не сделан мной, но он прекрасно работает в Почтальоне.
Вот скриншот, который отлично работал в Почтальоне:
и
Теперь мне просто нужно преобразовать его в ASP C #, который я потратил несколько дней на Google, но не смог найти нужный мне ответ, или япросто плохо в поиске правильного ключевого слова.Вот то, что я попробовал, но это код компании, который работает на его странице, но не на моей (он ушел).
public static objWebService PostSomething(string xml, Object md)
{
objWebService _webService = new objWebService();
_webService.result = false;
DataSet ds = new DataSet();
XmlDocument xdoc = new XmlDocument(); //seems not used
string responseString = string.Empty;
string endpoint = "http://xxxxxxxxxxxxx"; // my post api.
try
{
HttpWebRequest wrWebRequest = (HttpWebRequest)WebRequest.Create(endpoint);
wrWebRequest.Headers["Authorization"] = "Basic xxxxxxxxxxxxx";
string boundary = "----------" + DateTime.Now.Ticks.ToString("x");
byte[] boundaryBytes = Encoding.UTF8.GetBytes("--" + boundary + "\r\n");
byte[] newLine = Encoding.UTF8.GetBytes("\r\n");
byte[] trailer = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
byte[] boundaryBytesF = System.Text.Encoding.ASCII.GetBytes("--" + boundary + "\r\n");
wrWebRequest.ContentType = "multipart/form-data; boundary=" + boundary;
wrWebRequest.Method = "POST";
wrWebRequest.KeepAlive = true;
Stream requestStream = wrWebRequest.GetRequestStream();
byte[] formItemBytes = System.Text.Encoding.UTF8.GetBytes(string.Format("Content-Disposition: form-data; name=\"{0}\"; filename=\"proposal.xml\"\r\nContent-Type: application/xml;\r\n\r\n{1}", "xml", req));
requestStream.Write(boundaryBytes, 0, boundaryBytes.Length);
requestStream.Write(formItemBytes, 0, formItemBytes.Length);
if (Utilities.IsFileExist(md.file1_path))
{
requestStream.Write(newLine, 0, newLine.Length);
int bytesRead = 0;
byte[] buffer = new byte[2048];
byte[] formFileBytes = System.Text.Encoding.UTF8.GetBytes(string.Format("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: image/jpeg;\r\n\r\n", "files", md.file1_name));
requestStream.Write(boundaryBytes, 0, boundaryBytes.Length);
requestStream.Write(formFileBytes, 0, formFileBytes.Length);
using (FileStream fileStream = new FileStream(System.Web.Hosting.HostingEnvironment.MapPath(md.file1_path), FileMode.Open, FileAccess.Read))
{
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
{
requestStream.Write(buffer, 0, bytesRead);
}
fileStream.Close();
}
}
requestStream.Write(newLine, 0, newLine.Length);
requestStream.Write(trailer, 0, trailer.Length);
requestStream.Close();
HttpWebResponse wrWebResponse = wrWebRequest.GetResponse() as HttpWebResponse;
using (Stream s = wrWebResponse.GetResponseStream())
{
ds.ReadXml(s);
}
if (ds.Tables["returnObj"] != null)
{
_webService.result = true;
_webService.output = ds;
}
else
{
_webService.result = false;
}
}
catch (WebException wExp)
{
_webService.result = false;
}
catch (Exception exp)
{
_webService.result = false;
}
return _webService;
}
Это код для вставки копии, который я взял у своего бывшегомы с коллегами подстригаем везде, где чувствую, что подстричься безопасно.Простите, если все еще грязно.
Всякий раз, когда запускается эта часть кода, я получаю эти исключения.
Exception thrown: 'System.Web.HttpException' in System.Web.dll
Exception thrown: 'System.Web.HttpException' in System.Web.dll
Exception thrown: 'System.ArgumentException' in System.Web.dll
Может кто-нибудь показать мне, как это должно быть сделано, или дать ссылку на ответесли это было задано раньше и решено?