【问题标题】:How to POST a JSON to a specific url using VB.NET?如何使用 VB.NET 将 JSON 发布到特定的 url?
【发布时间】:2011-09-12 07:22:04
【问题描述】:

我是 VB.NET 中 Web 服务的新手。我正在制作一个可以与 JIRA (http://www.atlassian.com/software/jira/) 对话的桌面应用程序。他们提供了一个我决定使用的 REST api。第一步是登录,他们说...

“要登录 JIRA,您需要 POST JSON 格式的用户名和密码...”

{“用户名”:“管理员”,“密码”:“管理员”}

到这个网址...

https://addressgoeshere(我们使用的是 https)

有人可以提供一个示例代码来执行此操作,以便我可以有一个指南和一个好的开始吗?

【问题讨论】:

    标签: vb.net web-services json post


    【解决方案1】:

    这是有效发布 json 的代码。变量res 能够为您提供对查询的响应

    记得导入

    • System.Net
    • System.IO
    • System.text

    通过使用

    Imports
    

    然后是导入名称

    要绕过过期的 ssl 证书,请检查:http://blog.jameshiggs.com/2008/05/01/c-how-to-accept-an-invalid-ssl-certificate-programmatically/

    Private Function SendRequest(uri As Uri, jsonDataBytes As Byte(), contentType As String, method As String) As String
      Dim response As String
      Dim request As WebRequest
    
      request = WebRequest.Create(uri)
      request.ContentLength = jsonDataBytes.Length
      request.ContentType = contentType
      request.Method = method
    
      Using requestStream = request.GetRequestStream
        requestStream.Write(jsonDataBytes, 0, jsonDataBytes.Length)
        requestStream.Close()
    
        Using responseStream = request.GetResponse.GetResponseStream
          Using reader As New StreamReader(responseStream)
            response = reader.ReadToEnd()
          End Using
        End Using
      End Using
    
      Return response
    End Function
    

    使用此功能

    Dim data = Encoding.UTF8.GetBytes(jsonSring)
    Dim result_post = SendRequest(uri, data, "application/json", "POST")
    

    --编辑--

    链接的页面现在已过期。这是一个有效的存档副本:

    https://web.archive.org/web/20110924191356/http://blog.jameshiggs.com/2008/05/01/c-how-to-accept-an-invalid-ssl-certificate-programmatically/

    【讨论】:

    • 嗨!谢谢!我终于让它工作了!但我有一个小问题。当我尝试使用 https 时,它给出了 “System.dll 中发生了 'System.Net.WebException' 类型的未处理异常附加信息:底层连接已关闭:发送时发生意外错误。” 如何使用 https 使其工作?谢谢!
    • 这有点奇怪。我不断收到这个错误。当我在 google chrome 或任何其他浏览器中访问 url 时,它会要求提供证书,我只需单击“继续”。你认为这与它有关吗?
    • 是的,证书是罪魁祸首。有一种方法可以通过代码绕过它,更新了我的答案。
    • HttpWebRequest 用于 HTTP 特定功能,例如 Accept 标头。
    【解决方案2】:

    对于'底层连接已关闭:'错误包括...WebRequest.Create(Url)行之后的这两行代码-它应该可以工作

    System.Net.ServicePointManager.UseNagleAlgorithm = False System.Net.ServicePointManager.Expect100Continue = False

    【讨论】:

      猜你喜欢
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多