PDA

View Full Version : سوال: به هم ریختن متن فارسی در متد post از Restful وب سرویس



rezayeman
یک شنبه 02 تیر 1398, 16:56 عصر
با سلام خدمت دوستان عزیز
من دارم یه متد Post با کد زیر Call می کنم. همه کارها به درستی انجام میشه.

مشکل کار فقط تو ذخیره کردن اسم راننده که فارسی نوشته میشه هستش. تو دیتا بیس بصورت حروف غیر مرتبط ذخیره میشه مثلا یه نمونش اینطوریه -EJ/ EG1'(J

مشکل از دیتابیس و سمت سرور نیست. چون طبق گفته ادمین سایر کسانی که call میکنن اطلاعاتشون درسته

دوستان اگه تجربه ای تو این زمینه دارن ممنون میشم راهنمایی کنن
private static string Post(string url)
{
string postData = string.Empty;
HttpWebRequest httpWReq = (HttpWebRequest) WebRequest.Create(url);
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, postData);
byte[] data = ms.ToArray();
httpWReq.ContentLength = data.Length;
httpWReq.Method = "POST";
httpWReq.Headers.Set(HttpRequestHeader.AcceptEncod ing, "UTF-8");
httpWReq.Headers.Set(HttpRequestHeader.AcceptChars et, "UTF-8");
httpWReq.Headers.Set(HttpRequestHeader.AcceptLangu age, "fa-ir, ar, en");
httpWReq.Headers.Add(HttpRequestHeader.AcceptChars et, "UTF-8");
httpWReq.Headers.Add(HttpRequestHeader.AcceptEncod ing, "UTF-8");
httpWReq.Headers.Add(HttpRequestHeader.AcceptLangu age, "fa-ir, ar, en");
httpWReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1);Accept-Language:fa-ir";
httpWReq.Accept = "application/x-www-form-urlencoded;charset=UTF-8";
httpWReq.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";
httpWReq.Headers.Add("USER", "62");
httpWReq.Headers.Add("PASSID", "11111");
httpWReq.Headers.Add("DRIVER", "علی محمدی");

byte[] bytes = Encoding.UTF8.GetBytes(postData.ToString());

using (Stream newStream = httpWReq.GetRequestStream())
{
newStream.Write(data, 0, data.Length);
}

HttpWebResponse response = (HttpWebResponse) httpWReq.GetResponse();
Stream stream = response.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding("UTF-8");
StreamReader streamReader = new StreamReader(stream, encode);
string html = streamReader.ReadToEnd();
response.Close();
streamReader.Close();
return html;
}

Mahmoud.Afrad
جمعه 07 تیر 1398, 22:35 عصر
اینو امتحان کنید
private string Post(string url, string postData)
{
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
byte[] dataBytes = Encoding.UTF8.GetBytes(postData);
request.Method = "POST";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1);Accept-Language:fa-ir";
request.Accept = "application/x-www-form-urlencoded;charset=UTF-8";
request.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(dataBytes, 0, dataBytes.Length);
}

string html = null;
using (HttpWebResponse response = (HttpWebResponse) request.GetResponse())
{
Stream responseStream = response.GetResponseStream();
if (responseStream != null)
{
using (var streamReader = new StreamReader(responseStream, Encoding.UTF8))
{
html = streamReader.ReadToEnd();
}
}
}

return html;
}
نحوه استفاده
string data = "USER=62&PASSID=11111&DRIVER=علی محمدی";
string response = Post("........", data);
//....

rezayeman
دوشنبه 10 تیر 1398, 07:17 صبح
سلام
ممنونم از جوابتون. ولی طبق گفته سازنده وب سرویس پارامتر ها می بایست از طریق هدر پاس داده بشن