2016-11-07 7 views
0

Im пытается отправить некоторые данные в Мачин через кабель LAN и WebRequest это класс им с помощьюUTF-8 символов URL как в C# WebRequest и браузер не работает

public class MyWebRequest 
{ 
    private WebRequest request; 
    private Stream dataStream; 

    private string status; 

    public String Status 
    { 
     get 
     { 
      return status; 
     } 
     set 
     { 
      status = value; 
     } 
    } 

    public MyWebRequest(string url) 
    { 

     request = WebRequest.Create(url); 
    } 

    public MyWebRequest(string url, string method) 
     : this(url) 
    { 

     if (method.Equals("GET") || method.Equals("POST")) 
     { 
      request.Method = method; 
     } 
     else 
     { 
      throw new Exception("Invalid Method Type"); 
     } 
    } 

    public MyWebRequest(string url, string method, string data) 
     : this(url, method) 
    { 

     string postData = data; 
     byte[] byteArray = Encoding.UTF8.GetBytes(postData); 

     request.ContentType = "application/x-www-form-urlencoded"; 

     // Set the ContentLength property of the WebRequest. 
     request.ContentLength = byteArray.Length; 

     dataStream = request.GetRequestStream(); 

     dataStream.Write(byteArray, 0, byteArray.Length); 

     dataStream.Close(); 

    } 

    public string GetResponse() 
    { 
     WebResponse response = request.GetResponse(); 

     this.Status = ((HttpWebResponse)response).StatusDescription; 

     dataStream = response.GetResponseStream(); 

     StreamReader reader = new StreamReader(dataStream); 

     string responseFromServer = reader.ReadToEnd(); 

     reader.Close(); 
     dataStream.Close(); 
     response.Close(); 

     return responseFromServer; 
    } 

} 

и код действия

command="?insert_employee:cart_number=0007989222&name=علي&last_name=رمضاني&finger_number=123&?"; 
MyWebRequest wr = new MyWebRequest(command, "GET"); 
string Response = wr.GetResponse(); 

, как вы видите, есть некоторые UTF-8 символов в моей команде, и доза не работает как в браузере и мое приложение , но когда я пытаюсь эту строку она прекрасно работает:

command = "?insert_employee:cart_number=0007989222&name=ali&last_name=ramazani&finger_number=123&?" 

Я тестировал множество способов, которые я нашел в stackoverflow, таких как «использование uri вместо url», «using httpUtility.UrlEncode», ... но ни один из них не был эффективным или, возможно, я использовал их неправильно.

У вас есть идеи помочь?

ответ

0

Вы можете использовать метод HttpUtility.UrlPathEncode, который вы кодируете часть пути URL-адреса, чтобы гарантировать согласованный декодированный URL-адрес независимо от того, какая платформа или браузер выполняет декодирование.

В то время как там красиво объяснение Encoding

urlPrueba = "http://someexample.com/?insert_employee:cart_number=0007989222&name=علي&last_name=رمضاني&finger_number=123&?"; 
var uri = new Uri(urlPrueba); 
Console.WriteLine("urlPrueba" + " = " + uri.AbsoluteUri); 
+0

я уже пробовал это тоже, но не успех! –

+0

Ури не помог мне тоже –