RestSharp V112.1.0中RestResponse.Content截断问题求助
RestSharp V112.1.0中RestResponse.Content截断但RawBytes完整的解决方案
在C#使用RestSharp V112.1.0调用Rest API时,遇到RestResponse.Content内容被截断的问题,但RawBytes中存在完整的响应数据。
截断的响应信息:
RestSharp.RestResponse} Content: "[{\"ClientId\":\"11030xxxx\",\"tradingSymbol\":\"NIFTY-Dec2024-23850-CE\",\"securityId\":\"41689\",\"positionType\":\"CLOSED\",\"exchangeSegment\":\"NSE_FNO\",\"productType\":\"MARGIN\",\"buyAvg\":68.5,\"costPrice\":68.5,\"buyQty\":100,\"sellAvg\":70.3,\"sellQty\":100,\"netQty\":0,\"realizedProfit\":180.0,\"unrealizedProfit\":0.0,\"rbiReferenceRate\":1.0,\"multiplier\":1,\"carryForwardBuyQty\":0,\"carryForwardSellQty\":0,\"carryForwardBuyValue\":0.0,\"carryForwardSellValue\":0.0,\"dayBuyQty\":100,\"daySellQty\":100,\"dayBuyValue\":6850.0,\"daySellValue\":7030.0,\"drvExpiryDate\":\"2024-12-26 14:30:00\",\"drvOptionType\":\"CALL\",\"drvStrikePrice\":23850.0,\"crossCurrency\":false},{\"dhanClientId\":\"11030xxxx\",\"tradingSymbol\":\"PSUBNKBEES\",\"securityId\":\"15032\",\"positionType\":\"LONG\",\"exchangeSegment\":\"NSE_EQ\",\"productType\":\"CNC\",\"buyAvg\":73.95,\"costPrice\":73.95,\"buyQty\":50,\"sellAvg\":0.0,\"sellQty\":0,\"netQty\":50,\"realizedProfit\":0.0,\"unrealizedProfit\":-29.5, \"rbiReferenceRate\":1.0,\"multiplier\":1,\"carryForwardBuyQty\":0,\"carryForwardSellQty\":0,\"carryForwardBuyValue\":0.0,\"carryForward...\"\n ContentEncoding: \"\"\n ContentLength: -1\n ContentType: \"application/json\"\n Cookies: Count = 0\n ErrorException: null\n ErrorMessage: null\n Headers: Count = 5\n RawBytes: {byte[1203]}\n Request: {RestSharp.RestRequest}\n ResponseStatus: Completed\n ResponseUri: {https://api.xxxx.co/v2/positions}\n Server: \"\"\n StatusCode: OK\n StatusDescription: \"\"\n
RawBytes解码后的完整内容:
[{"ClientId":"11030xxxx","tradingSymbol":"NIFTY-Dec2024-23850-CE","securityId":"41689","positionType":"CLOSED","exchangeSegment":"NSE_FNO","productType":"MARGIN","buyAvg":68.5,"costPrice":68.5,"buyQty":100,"sellAvg":70.3,"sellQty":100,"netQty":0,"realizedProfit":180.0,"unrealizedProfit":0.0,"rbireferenceRate":1.0,"multiplier":1,"carryForwardBuyQty":0,"carryForwardSellQty":0,"carryForwardBuyValue":0.0,"carryForwardSellValue":0.0,"dayBuyQty":100,"daySellQty":100,"dayBuyValue":6850.0,"daySellValue":7030.0,"drvExpiryDate":"2024-12-26 14:30:00","drvOptionType":"CALL","drvStrikePrice":23850.0,"crossCurrency":false},{"ClientId":"11030xxxx","tradingSymbol":"PSUBNKBEES","securityId":"15032","positionType":"LONG","exchangeSegment":"NSE_EQ","productType":"CNC","buyAvg":73.95,"costPrice":73.95,"buyQty":50,"sellAvg":0.0,"sellQty":0,"netQty":50,"realizedProfit":0.0,"unrealizedProfit":-29.5,"rbiReferenceRate":1.0,"multiplier":1,"carryForwardBuyQty":0,"carryForwardSellQty":0,"carryForwardBuyValue":0.0,"carryForwardSellValue":0.0,"dayBuyQty":50,"daySellQty":0,"dayBuyValue":3697.5,"daySellValue":0.0,"drvExpiryDate":"0001-01-01","drvOptionType":"NA","drvStrikePrice":0.0,"crossCurrecy":false}]
解决方法:
手动解码RawBytes获取完整内容
直接通过编码将RawBytes转换为字符串,绕过Content属性的截断问题:using System.Text; // 假设response是你的RestResponse实例 var fullResponseContent = Encoding.UTF8.GetString(response.RawBytes);之后可以正常解析这个完整字符串为JSON对象。
检查RestClient配置
确认创建RestClient时的RestClientOptions是否有影响内容读取的设置,比如是否启用了流式响应处理。若开启了流式,Content属性可能不会自动加载完整数据,需要手动处理流,但既然RawBytes完整,这个场景下优先用上面的方法。升级RestSharp版本
该问题可能是V112.1.0的已知bug,尝试升级到最新稳定版RestSharp,查看官方更新日志是否修复了响应内容截断的问题。
内容的提问来源于stack exchange,提问作者Krishna G
相关产品推荐
相关产品推荐

