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

VB.NET中WooCommerce RestAPI PUT更新订单状态失败

VB.NET调用WooCommerce REST API更新订单状态失败(Postman可正常运行)

你的问题很典型——Postman里能正常执行的请求,到VB.NET里就没生效,虽然能拿到完整的订单响应,但状态就是没更新。我帮你排查了代码里的几个关键问题,下面是具体的解决方案:

问题分析

  1. 重复的Content-Type头:你同时设置了application/json和text/plain两种Content-Type,这会让服务器混淆应该用哪种格式解析请求体。WooCommerce API只接受JSON格式,多余的text/plain头会干扰解析逻辑。
  2. 手动拼接JSON的风险:用Chr(34)拼接JSON字符串虽然在这个例子里格式看似正确,但这种方式很容易出现疏漏,而且你设置的请求参数媒体类型是application/json,text/plain,同样会让服务器无法正确识别请求体格式。
  3. 缺少超时配置:Postman生成的C#代码里设置了client.Timeout = -1,但你的VB代码里没加,虽然这不是直接原因,但保持配置一致能避免潜在的超时问题。

修改后的VB.NET代码

先确保你已经安装了RestSharp和Newtonsoft.Json NuGet包,然后替换成下面的代码:

' 设置安全协议(推荐只保留TLS系列,SSL3已不安全)
Net.ServicePointManager.SecurityProtocol = Net.SecurityProtocolType.Tls12 Or Net.SecurityProtocolType.Tls11 Or Net.SecurityProtocolType.Tls

' 初始化RestClient并设置超时
Dim client = New RestClient("https://staging3.reekooz.com/wp-json/wc/v3/orders/227175")
client.Timeout = -1 ' 和Postman配置对齐,避免超时中断

' 创建PUT请求
Dim request = New RestRequest(Method.PUT)

' 添加必要请求头,只保留JSON格式的Content-Type
request.AddHeader("Content-Type", "application/json")
request.AddHeader("Authorization", "Basic correctString") ' 替换为你的正确授权字符串

' 用对象序列化生成JSON,避免手动拼接的格式错误
Dim updatePayload = New With {
    .status = "preparing"
}
Dim jsonBody = Newtonsoft.Json.JsonConvert.SerializeObject(updatePayload)

' 正确添加请求体,明确指定媒体类型为application/json
request.AddParameter("application/json", jsonBody, ParameterType.RequestBody)

' 执行请求并获取响应
Dim response = client.Execute(request)

' 输出响应内容
Response.Write(response.Content)

关键修改说明

  • 移除了重复的text/plain头,明确告诉服务器请求体是JSON格式;
  • 使用Newtonsoft.Json序列化匿名类生成JSON,既简洁又能保证格式绝对正确;
  • 请求参数的媒体类型明确设置为application/json,让服务器能正确解析你的更新请求;
  • 添加了超时设置,和Postman的配置保持一致,避免因超时导致的请求中断。

额外检查点

  1. 确认WooCommerce后台已经正确添加了preparing自定义订单状态,并且该状态允许通过API更新;
  2. 检查你的授权字符串是否拥有edit_orders权限(能建立连接不代表有修改订单状态的权限);
  3. 查看响应的HTTP状态码:如果是200 OK但状态没改,说明请求体解析有问题;如果是4xx状态码,说明权限或请求路径存在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 14:02:30