【问题标题】:Http WebRequest with Hebrew characters (SQL Server CLR sp)带有希伯来字符的 Http WebRequest (SQL Server CLR sp)
【发布时间】:2014-10-24 10:47:07
【问题描述】:

我已经准备了一个 CLR 存储过程,以便为 SMS(消息)Web 服务发送 GET 请求。这是代码:

[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”或省略它。没用。
  • 我尝试在 OLE 自动化过程中使用完全相同的 URL(带有希伯来字母)。它奏效了。

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

谢谢。

【问题讨论】:

  • 我尝试在 OLE 自动化过程中使用完全相同的 URL(带有希伯来字母)。它奏效了。
  • 您可以为StreamReader 指定编码。使用new StreamReader(dataStream, Encoding.UTF8);(或任何你的编码)
  • 这不只适用于响应吗?
  • 这仍然是一个问题吗?您传递给 CLR 存储过程的请求 URI 是什么?您对HttpGet proc 的确切调用是什么?
  • 我真的不记得了。不过谢谢!

标签: c# sql-server web-services get sqlclr


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 2015-12-11
    相关资源
    最近更新 更多