You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将带--data-raw参数的POST请求CURL命令转换为VB.NET代码并实现文件下载

解决VB.NET中POST请求传递JSON体并保存响应到文件的问题

针对你提供的curl POST命令,我们可以一步步将其转换为VB.NET代码,重点解决传递请求体(对应--data-raw)和保存响应到本地文件这两个核心需求:

完整转换后的VB.NET代码

Imports System
Imports System.IO
Imports System.Net
Imports System.Text

Module Module1
    Sub Main()
        ' 目标API地址
        Dim apiUrl As String = "http://ip:port/copy"
        ' 请求体JSON(对应curl的--data-raw参数,注意VB.NET中双引号需要用两个双引号转义)
        Dim requestBody As String = "{""file"":""//path/file.xlsx""}"
        
        ' 创建POST请求
        Dim request As HttpWebRequest = DirectCast(HttpWebRequest.Create(apiUrl), HttpWebRequest)
        request.Method = "POST"
        request.ContentType = "application/json" ' 对应curl的Content-Type请求头
        request.Credentials = userCredentials ' 保留你之前的身份验证凭据,不需要可注释
        
        ' 写入请求体(处理--data-raw参数)
        Using requestStream As Stream = request.GetRequestStream()
            Dim requestBytes As Byte() = Encoding.UTF8.GetBytes(requestBody)
            requestStream.Write(requestBytes, 0, requestBytes.Length)
        End Using
        
        Try
            ' 获取API响应
            Using response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
                ' 将响应内容写入本地文件(对应curl的>> D:\file.xlsx)
                Using responseStream As Stream = response.GetResponseStream()
                    Using fileStream As New FileStream("D:\file.xlsx", FileMode.Create, FileAccess.Write)
                        responseStream.CopyTo(fileStream)
                    End Using
                End Using
                
                Console.WriteLine("文件已成功保存到D:\file.xlsx")
            End Using
        Catch ex As WebException
            ' 处理请求异常(比如网络错误、API返回错误状态码)
            Console.WriteLine($"请求出错: {ex.Message}")
            If ex.Response IsNot Nothing Then
                Using errorResponse As HttpWebResponse = DirectCast(ex.Response, HttpWebResponse)
                    Console.WriteLine($"错误状态码: {errorResponse.StatusCode}")
                End Using
            End If
        End Try
        
        Console.WriteLine("按任意键退出...")
        Console.ReadKey()
    End Sub
End Module

关键部分对应curl参数的解析

  • --request POST:通过request.Method = "POST"设置请求方法为POST。
  • --header "Content-Type: application/json":通过request.ContentType = "application/json"告诉API我们发送的是JSON格式数据。
  • --data-raw "{"file":"//path/file.xlsx"}":VB.NET中需要用两个双引号""转义JSON里的双引号,再将字符串编码为UTF8字节数组,写入请求流完成传递。
  • >> D:\file.xlsx:通过将API返回的响应流直接复制到本地文件流,实现响应内容的写入;如果需要追加内容而非覆盖现有文件,可将FileMode.Create改为FileMode.Append。

额外优化说明

  • 全程使用Using语句自动释放流资源,避免内存泄漏。
  • 添加了Try-Catch异常处理块,方便排查网络错误或API返回的异常状态码。
  • 如果你不需要身份验证,可以直接注释掉request.Credentials = userCredentials这一行。

内容的提问来源于stack exchange,提问作者SAIP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 15:17:49