如何解决来自 NSwag CSharpClientGenerator 的客户端无法反序列化字符串
我们使用 AddOpenApiDocument 获得了 Swagger.json 输出(见下文)。
来自 swagger 的片段如下所示,它返回 200 响应类型的 application/json。模式部分(我不太熟悉)显示“类型”:“字符串”。
当我们从 NSwag.CodeGeneration.CSharp.CSharpClientGenerator 生成和使用客户端时 我们得到一个错误:
SwaggerException: Could not deserialize the response body stream as System.String.
Status: 200
Response:
---> Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: P.
Path '',line 1,position 1.
招摇片段
"/api/infrastructure": {
"get": {
"tags": [
"Infrastructure"
],"operationId": "Infrastructure_Ping","responses": {
"200": {
"description": "","content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
}
}
}
}
var status_ = (int)response_.StatusCode;
if (status_ == 200)
{
var objectResponse_ = await ReadobjectResponseAsync<string>(response_,headers_,cancellationToken).ConfigureAwait(false);
if (objectResponse_.Object == null)
{
throw new YadaYada.Library.Client.SwaggerException("Response was null which was not expected.",status_,objectResponse_.Text,null);
}
return objectResponse_.Object;
}
else
{
var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsstringAsync().ConfigureAwait(false);
throw new YadaYada.Library.Client.SwaggerException("The HTTP status code of the response was not expected (" + status_ + ").",responseData_,null);
}
来自 fiddler 的捕获是:
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Content-Length: 41
Connection: keep-alive
Date: Mon,26 Apr 2021 12:29:10 GMT
Cache-Control: no-store
Apigw-Requestid: eZDDBie8oAMEM7A=
X-Cache: Miss from cloudfront
Via: 1.1 ec8b1bfbf511818c606f196b49f871e2.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: IAD50-C2
X-Amz-Cf-Id: G90aS8nFabyc4j8jdQ8jHlWdD8GhSqwk-vx8G6gHWnyg-9BIfvYE1Q==
Pong3
我们可能做错了什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。