无法用VB.NET理解JavaScript API示例

时间:2013-02-21 22:29:31

标签: javascript vb.net json asp.net-ajax jsonp

我是一名新的vb.net开发人员,我正在尝试与API服务集成,该服务允许我存储信用卡数据而不符合PCI标准。我遇到的问题是该示例仅为JavaScript提供,而且我无法弄清楚如何在vb.NET中创建相同的简单过程。我希望有人可以帮助我这个样本。

我们的想法是将此数据从我的表单发送到API,然后处理成功或失败的响应数据。

        //<![CDATA[
        $(document).ready(function() {
            $('input:button').click(function() {
                $.ajax({
                    type: 'post',
                    url: 'https://certify.i4go.com/index.cfm',
                    dataType: 'jsonp',
                    data: {
                        fuseaction: 'account.jsonpPostCardEntry',
                        i4Go_AccountID: '123123',
                        i4Go_SiteID: '456456',
                        i4Go_CardNumber: $('#i4Go_CardNumber').val(),
                        i4Go_ExpirationMonth: $('#i4Go_ExpirationMonth').val(),
                        i4Go_ExpirationYear: $('#i4Go_ExpirationYear').val()
                    },
                    cache: false
                });
            });                 
        });
        function parseResponse(data) {
            if (data.i4go_responsecode != null) {
                if (data.i4go_responsecode == 1) {
                    $('#response').html('i4Go_UniqueId: ' + data.i4go_uniqueid);
                } else {
                    $('#response').html('i4Go_ResponseCode: ' + data.i4go_responsecode);
                }
            } else {
                $('#response').html('i4Go_ResponseCode is null');
            }
        }
        //]]>
    </script>
</head>
<body>
    <table cellpadding="0" cellspacing="0">
        <tbody><tr>
            <td>Card number:</td><td><input type="text" id="i4Go_CardNumber" value="4111111111111111"></td>
        </tr>
        <tr>
            <td>Exp month:</td><td><input type="text" id="i4Go_ExpirationMonth" value="12"></td>
        </tr>
        <tr>
            <td>Exp year:</td><td><input type="text" id="i4Go_ExpirationYear" value="2020"></td>
        </tr>
        <tr>
            <td><input type="button" value="Get Token"></td>
        </tr>
    </tbody></table>
    <div id="response"></div>

我感谢任何帮助。

干杯,

AJ

1 个答案:

答案 0 :(得分:1)

如果您使用的是.NET 4.5,请查看新的WebAPI调用,这使得这非常简单。创建表示数据的类后,序列化全部为您完成,您的代码将如下所示:

Dim jsonObject As ' TODO: Create a class that represents the data, and instantiate the object with the data
Dim client As New HttpClient()
client.BaseAddress = new Uri("https://certify.i4go.com/")
Dim result As HttpResponseMessage = client.PostAsJsonAsync("index.cfm", jsonObject).Result

分析返回的对象以获取他们传回给你的任何内容,并决定如何从那里继续。

有很多重载可供选择,所有这些都基本相同。

修改: 对于.NET 4.0,您可以使用WebClient而不是HttpClient - 这是一个更多的工作,但仍然不是太糟糕 - 您只需手动处理序列化。还有很多方法可以做到这一点,但这里有一个:

Dim message As String
Dim s As New SomeData() ' SomeData still represents the data you're passing
message = New JavaScriptSerializer().Serialize(s)
Dim webClient As New WebClient()
Dim response() As Byte = webClient.UploadData(url, Encoding.UTF8.GetBytes(message))
Dim responseString as String = Encoding.UTF8.GetString(response)

现在您已将响应作为字符串,您可以弄清楚如何处理它 - 它可能是一个JSON对象或类似的东西,您需要阅读或反序列化。