2014-08-30 2 views
1

Я подготовил хранимую процедуру CLR для отправки запросов GET для веб-службы SMS (обмена сообщениями). Это код:Http WebRequest с символами на иврите (SQL Server CLR sp)

[Microsoft.SqlServer.Server.SqlProcedure] 
public static void HttpGet(SqlString uri, out SqlString textResponse) 
{ 
    Uri webUri = new Uri(uri.Value); 

    HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(webUri); 
    webReq.Method = "GET"; 

    WebResponse response = webReq.GetResponse(); 
    Stream dataStream = response.GetResponseStream(); 

    using (dataStream) 
    { 
     StreamReader reader = new StreamReader(dataStream); 
     using (reader) 
     { 
      textResponse = reader.ReadToEnd(); 
     } 
    } 
} 

Я пытаюсь отправить следующий запрос:

http://serviceaddress/SMSManager/msgSend.jsp?msg=עברית&to=sms:050-1234567&encoding=windows-1255 

почему-то сообщение я получаю это в тарабарщину.

  • Я попытался отправить запросы с ивритскими письмами на другие веб-службы, и он отлично работал.
  • Я пробовал URL-кодирование иврита, и он тоже не работал. Я попытался изменить запрошенную кодировку на «utf8» или пропустить ее. не работает.
  • Я попытался использовать точно такой же URL (с ивритскими буквами) с процедурой автоматизации OLE. Это сработало.

Я приветствовал бы любые советы о том, как продолжить или как исправить эту проблему.

Спасибо.

+0

Я попытался использовать точно такой же URL (с ивритскими буквами) с процедурой автоматизации OLE. Это сработало. –

+0

Вы можете указать кодировку для StreamReader. Используйте 'new StreamReader (dataStream, Encoding.UTF8);' (или независимо от вашей кодировки) –

+0

Не относится ли это только к ответу? –

ответ

0

Необходимо кодировать URL-адрес. Посмотрите на HttpUtility.UrlEncode Method

+0

Я пробовал это. Я все еще получаю сообщение поврежденным. –