Рабочий сценарий
При передаче первого параметра "strPostData" (не содержит специальных символов в пароле), как показано ниже, xml-запрос означает, что отлично работает, а StreamReader также предоставляет ответ и переменная "strResult" успешно загружена .. "Request = janajana "
НЕ рабочий сценарий
Но когда пароль пользователя содержит" специальные символы "в первом параметре," strPostData "означает, что StreamReader не смог предоставить ответ и переменная" strResult "не была успешно загружена.. "Request=<request><Username>jana</Username><Password>jana!@#$%^&*()</Password></request>"
При передаче пароля с комбинацией "специальных символов" при сбое HTTPWebResponse и сбое Streamreader ..
Я пытался с оператором объекта Stream с ..
//string tempString = Encoding.UTF8.GetString(buffer, 0, buffer.Length); &
Изменение кода буфера чтения // Int32 count = await streamRead.ReadAsync (readBuffer, 0, 256);но не работает ,,, пожалуйста, ведите меня кого-нибудь
public string[] GetResponseWebAPI(string strPostData, string strUrl)
{
string[] arrReturn = new string[3];
HttpWebResponse myHttpWebResponse = null;
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] buffer = encoding.GetBytes(strPostData);
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(strUrl);
myRequest.Timeout = 25000;// 25s
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = buffer.Length;
myRequest.AllowAutoRedirect = true;
ServicePointManager.ServerCertificateValidationCallback = new
System.Net.Security.RemoteCertificateValidationCallback
(AcceptAllCertifications);
Stream newStream = myRequest.GetRequestStream();
newStream.Write(buffer, 0, buffer.Length);
newStream.Close();
myHttpWebResponse = (HttpWebResponse)myRequest.GetResponse();
WebHeaderCollection webHeader = myHttpWebResponse.Headers;
arrReturn[0] = webHeader["Statuscode"];
arrReturn[1] = webHeader["Statusmessage"];
Stream streamResponse = myHttpWebResponse.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
Char[] readBuffer = new Char[256];
int count = streamRead.Read(readBuffer,0, 256);
string strResult = string.Empty;
while (count > 0)
{
strResult += new String(readBuffer,0, count);
count = streamRead.Read(readBuffer,0, 256);
}
arrReturn[2] = strResult;
streamRead.Close();
streamResponse.Close();
myHttpWebResponse.Close();
return arrReturn;
}