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

C# WebForms调用WooCommerce REST API更新订单状态无效求助

问题分析与解决方案

核心问题:Content-Type 头部错误

你的代码中设置的httpWebRequest.ContentType = "text/json";不符合WooCommerce REST API的要求,API仅接受application/json作为JSON请求的Content-Type。这就是请求返回200-OK但订单状态未更新的关键原因——服务器接收了请求,但无法正确解析请求体中的JSON数据。

其他潜在优化点

  • 编码使用Encoding.Default可能导致跨环境的字符编码不一致,建议改用Encoding.UTF8(JSON标准要求UTF-8编码)。
  • JavaScriptSerializer在.NET中已被标记为过时,推荐使用System.Text.Json(.NET Core/.NET 5+)或Newtonsoft.Json(兼容旧.NET框架)进行JSON序列化。

修改后的代码示例

基于System.Text.Json的实现(推荐)

#region Request
string nuevoEstado = "trash";

var httpWebRequest = (HttpWebRequest)WebRequest.Create(urlRequestInicial);
httpWebRequest.ContentType = "application/json"; // 修正Content-Type为标准值
httpWebRequest.Method = "PUT";
// 使用UTF8编码处理密钥,避免字符乱码
httpWebRequest.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(apiUsr + ":" + apiPwd));
httpWebRequest.UseDefaultCredentials = true;
httpWebRequest.Proxy.Credentials = CredentialCache.DefaultCredentials;

// 使用System.Text.Json序列化请求体
var jsonBody = System.Text.Json.JsonSerializer.Serialize(new
{
    status = nuevoEstado
});

// 指定UTF8编码写入请求流
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream(), Encoding.UTF8))
{
    streamWriter.Write(jsonBody);
}

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
string returnString = httpResponse.StatusCode.ToString();

ltErr.Text = returnString;
#endregion

基于Newtonsoft.Json的实现(兼容旧.NET框架)

先安装Newtonsoft.Json NuGet包,再替换序列化部分代码:

// 替换序列化代码段
var jsonBody = Newtonsoft.Json.JsonConvert.SerializeObject(new
{
    status = nuevoEstado
});

额外验证建议

  1. 确认nuevoEstado的值是WooCommerce支持的合法订单状态(trash为合法状态,但需确保店铺权限允许修改至此状态)。
  2. 可以在请求后读取响应内容,查看API返回的具体数据,进一步排查是否有隐性错误:
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
    string responseContent = streamReader.ReadToEnd();
    // 输出responseContent查看API返回详情
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:05:17