关闭流错误消息UTF 8编码?

时间:2018-12-17 16:20:14

标签: c# asp.net .net vb.net

我在任何地方都发现了零信息,希望有人能帮助我。

我正在尝试使用标准.NET流编写器将付款处理字符串发送到Authorize.Net。我使用的语言是Visual Basic,但即使是C#示例,也将不胜感激!

这是我的代码:

    strPost = "x_FirstName=John&x_LastName=Smith&x_Phone=1234567..ETC..."

    Dim myWriter As StreamWriter = Nothing
    Dim objRequest As HttpWebRequest = CType(WebRequest.Create("https://secure2.authorize.net/gateway/transact.dll"), HttpWebRequest)
    objRequest.Method = "POST"

    objRequest.ContentLength = strPost.Length
    objRequest.ContentType = "application/x-www-form-urlencoded"

    Try
        myWriter = New IO.StreamWriter(objRequest.GetRequestStream())
        myWriter.Write(strPost)

    Catch e As Exception
        Return e.Message
    Finally
        myWriter.Close()
    End Try

如果我运行此代码,然后在页面上的文本框中键入文本(为strPost变量提供值),则可以正常工作。

但是,如果我在文本框(例如FirstName)中输入国际字符,或者从另一个网页复制/粘贴某人的名字,它将失败并显示以下消息:

“ /”应用程序中的服务器错误。 在所有字节写入之前无法关闭流。 说明:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。

异常详细信息:System.IO.IOException:在写入所有字节之前,无法关闭流。

例如,如果使用字母á代替字母a,它将失败并显示上面的错误消息。

如何将这段代码修改为UTF-8或删除那些字符等,并停止接收该消息?

提前谢谢!

-克里斯·李

1 个答案:

答案 0 :(得分:0)

我能够使用jdweng的推荐来获得解决方案。这是修改后的代码:

    Dim myWriter As StreamWriter = Nothing
    Dim objRequest As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
    objRequest.Method = "POST"

    objRequest.ContentType = "application/x-www-form-urlencoded"

    Try
        myWriter = New IO.StreamWriter(objRequest.GetRequestStream())
        myWriter.Write(strPost)

    Catch e As Exception
        Return e.Message
    Finally
        myWriter.Flush()
        myWriter.Close()
    End Try