Postman请求正常,VB.NET(RestSharp 106.15.0.0)调用报客户端内部错误
使用RestSharp(VB.NET)调用API报错,Postman可正常运行
问题概述
Postman发送请求能正常执行,但通过VB.NET的RestSharp类库(版本106.15.0.0)直接调用时返回客户端错误。
错误信息
<?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Body><env:Fault><faultcode>env:Client</faultcode><faultstring>Internal Error (from client)</faultstring></env:Fault></env:Body></env:Envelope>
请求头代码
request.AddHeader("Content-Type", "application/json") request.AddHeader("Accept", "application/json") request.AddHeader("X-Client-Id", "78a7babff8feb0aed964113c867288b7") request.AddHeader("Authorization", "Bearer xxxx") request.AddHeader("Connection", "keep-alive") request.AddHeader("Content-Length", 1420?)
JSON请求体
{ "billNumber": "R2LEH003776X", "internalInvoiceNumber": "6666", "paymentMethod": "s", "invoiceIssueDate": "2024-05-11", "invoiceDueDate": "2024-05-12", "invoiceDescription": "", "billerVATNumber": 333, "companyName": "", "companyRegistrationNumber": 1234567890, "consumerEmail": "xx@xx.dd", "consumerMobile": "", "customerVATNumber": "", "buildingNumber": 4562, "additionalNumber": 7122, "street": "INDUSTRIAL STREET", "district": "", "postalCode": 12333, "city": "", "province": "", "country": "", "totalBeforeVAT": 1000.92, "totalVAT": 150.14, "grandTotal": 1151.06, "item":[ { "invoiceLineSerialNo": 1, "itemCode": 100, "itemDescriptionArabic": "container BGHJ8777", "itemDescriptionEnglish": "", "unitOfMeasureArabic": "Unit", "unitOfMeasureEnglish": "", "itemPrice": 500.4586, "quantity": 2, "lineItemAmount": 1000.92, "lineItemDiscount": 0, "lineItemDiscountAmount": 0.0, "lineItemAmountAfterDiscount": 1000.92, "lineItemVAT": 15, "lineItemTotalVAT": 150.14, "lineItemTotal": 1151.06 } ] }
排查解决建议
- 移除手动设置的Content-Length头:RestSharp会自动计算并设置请求体长度,手动指定的数值(还带问号)大概率和实际请求体长度不匹配,直接删掉
request.AddHeader("Content-Length", 1420?)这行代码。 - 检查JSON序列化逻辑:不要手动拼接JSON字符串,优先用
request.AddJsonBody(yourModelObject)让RestSharp自动序列化,避免格式或编码错误;如果必须用字符串,用request.AddParameter("application/json", jsonString, ParameterType.RequestBody)明确指定参数类型。 - 确认请求方法一致:核对Postman使用的请求方法(POST/PUT等),确保RestSharp代码里的请求方法完全匹配,比如
client.Post(request)或client.Put(request)。 - 升级RestSharp版本:106.15.0是较老的版本,存在一些序列化和请求头处理的已知问题,升级到最新稳定版能解决不少兼容性问题。
- 对比请求细节:用抓包工具(比如Fiddler)分别捕获Postman和VB.NET代码的请求,对比请求头、请求体的字节内容,找出差异点。
内容的提问来源于stack exchange,提问作者adelaraby
相关产品推荐
相关产品推荐

