0

こんにちは、vb.net を使用して asmx Web サービスにデータを投稿しようとしていますが、「エラー WebException リモート サーバーがエラーを返しました: (500) 内部サーバー エラー」というエラーが表示されます。

私が使用したvb.netコーディングは次のとおりです。

Private Function ConnectApi() As String
    Dim hwReq As HttpWebRequest
    Dim hwRes As HttpWebResponse



    Dim gsLogin As String = "xxxxxxx"
    Dim gsPassword As String = "xxxxxxxxx"
    Dim gsCode As String = "xxxxxxxxx"
    Dim mTransactionId As String = "521"
    Dim mBaseCurrency As String = "USD"
    Dim mPaymentValue As Decimal = 2.1
    Dim mDateTime As Date = Now.Date

    Dim mCustomValue As Integer = 15

    'Dim strPostData As String = String.Format("sub={0}&login={1}&password={2}&limit={3}", Server.UrlEncode(ApiSub), Server.UrlEncode(ApiUsername), Server.UrlEncode(ApiPassword), Server.UrlEncode(ApiLimit))
    Dim strPostData As String = String.Format("gsLogin={0}&gsPassword={1}&gsCode={2}&mTransactionId={3}&mBaseCurrency={4}&mPaymentValue={5}&mDateTime={6}&mCustomValue={7}", Server.UrlEncode(gsLogin), Server.UrlEncode(gsPassword), Server.UrlEncode(gsCode), Server.UrlEncode(mTransactionId), Server.UrlEncode(mBaseCurrency), Server.UrlEncode(mPaymentValue), Server.UrlEncode(mDateTime), Server.UrlEncode(mBaseCurrency), Server.UrlEncode(mCustomValue))



    Dim strResult As String = ""
    Try
        'https:/gscash.com/gateway/staging/gsprocess.asmx?wsdl

        hwReq = DirectCast(WebRequest.Create("https://gscash.com/gateway/staging/gsprocess.asmx"), HttpWebRequest)





        hwReq.Method = "POST"
        hwReq.ContentType = "application/x-www-form-urlencoded"
        hwReq.ContentLength = strPostData.Length

        Dim arrByteData As Byte() = ASCIIEncoding.ASCII.GetBytes(strPostData)
        hwReq.GetRequestStream().Write(arrByteData, 0, arrByteData.Length)

        hwRes = DirectCast(hwReq.GetResponse(), HttpWebResponse)
        If hwRes.StatusCode = HttpStatusCode.OK Then
            Dim srdrResponse As New StreamReader(hwRes.GetResponseStream(), Encoding.UTF8)
            Dim strResponse As String = srdrResponse.ReadToEnd().Trim()

            strResult = strResponse

        End If
    Catch wex As WebException
        strResult = "Error WebException " + wex.Message
    Catch ex As Exception
        strResult = "Error Exception " + ex.Message
    Finally
        hwReq = Nothing
        hwRes = Nothing
    End Try

    Return strResult
End Function
4

1 に答える 1

0

あなたはこれについて難しい道を進んでいると思います。

要求/応答メカニズムを自分で構築しようとするよりも、Web サービスを参照としてアプリケーションに追加し、直接コードを介してアクセスする方がはるかに簡単です。上記の URL を使用して、.Net プロジェクトで Web 参照を作成できることを確認しました。

これらの Web サービス参照を追加して使用する方法の正確な詳細については、次の MSDN の記事を参照してください。

方法: Web 参照を追加および削除する

方法: Web サービスを呼び出す

2 番目の記事からわかるように、Web サービス参照を追加すると、それを操作するのは非常に簡単です。

    Dim oService As New gsCash.gsprocess

    Dim oRequest As New gsCash.PayWithGscash
    oRequest.gsLogin = "login"
    oRequest.gsPassword = "password"

    Dim oResult As gsCash.GsServiceOutput

    oResult = oService.PayWithGscash(oRequest)
于 2012-07-22T19:22:52.043 に答える