2014-08-30 43 views
1

我已经准备好一个CLR存储过程以便发送SMS(消息)Web服务的GET请求。这是代码: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 

出于某种原因,我得到的消息是在胡言乱语。

  • 我试过用希伯来字母发送请求到其他Web服务,它工作正常。
  • 我试过URL编码希伯来文部分,它也没有工作。我尝试将所需的编码更改为'utf8'或省略它。没有工作。
  • 我尝试使用与OLE自动化过程完全相同的URL(使用希伯来语字母)。有效。

我会欢迎任何有关如何继续或如何解决问题的建议。

谢谢你。

+0

我尝试使用完全相同的URL(使用希伯来语字母)与OLE自动化过程。有效。 – 2014-08-31 07:27:28

+0

您可以指定“StreamReader”的编码。使用'新的StreamReader(dataStream,Encoding.UTF8);'(或任何你的编码) – 2014-08-31 07:33:33

+0

不只适用于响应? – 2014-08-31 07:51:16

回答

0

您必须对您的URL进行编码。看看HttpUtility.UrlEncode Method

+0

我试过了。我仍然收到邮件已损坏。 – 2014-08-30 17:55:45