C# 使用HttpClient处理响应值

C# 使用HttpClient处理响应值,c#,asp.net-mvc,dotnet-httpclient,api-management,C#,Asp.net Mvc,Dotnet Httpclient,Api Management,我正在使用HttpClient实现一个对外部服务进行API调用的服务。 特别是其中一个呼叫并不总是返回预期的相同答案。实际地: 这是我的电话: 使用(HttpClientHandler handler=new-HttpClientHandler{Credentials=new-NetworkCredential(key,”)}) 使用(HttpClient=newhttpclient(handler)) { client.Timeout=TimeSpan.frommilless(Timeout.

我正在使用
HttpClient
实现一个对外部服务进行API调用的服务。 特别是其中一个呼叫并不总是返回预期的相同答案。实际地:

这是我的电话:

使用(HttpClientHandler handler=new-HttpClientHandler{Credentials=new-NetworkCredential(key,”)})
使用(HttpClient=newhttpclient(handler))
{
client.Timeout=TimeSpan.frommilless(Timeout.Infinite);
HttpRequestMessage请求=新的HttpRequestMessage(HttpMethod.Get,url);
使用(HttpResponseMessage response=await client.SendAsync(请求,HttpCompletionOption.ResponseHeadersRead))
{
使用(Stream body=await response.Content.ReadAsStreamAsync())
{
使用(StreamReader=新StreamReader(正文))
{
string read=string.Empty;
而(!reader.EndOfStream)
{
read+=reader.ReadLine();
}
返回JsonObject.Parse(读取);
}
}
}
这是aspected响应主体对象:

{
“id”:15,
“密钥”:“API_密钥”,
“状态”:“成功”,
“沙盒”:没错,
“创建时间”:“2013-10-27T13:41:00Z”,
“完成时间”:“2013-10-27T13:41:13Z”,
“source_文件”:{“id”:2,“name”:“testfile.pdf”,“size”:90571},
“target_files”:[{“id”:3,“name”:“testfile.pptx”,“size”:15311}],
“目标格式”:“png”,
“信用成本”:1
}
其中,
status
参数是
successful
,而
target\u files
参数是对象的
数组

但是,有时候,答案基本上是说它还没有完成转换(此API是一个文件转换服务),主体类型如下:

{
“id”:15,
“密钥”:“API_密钥”,
“状态”:“正在转换”,
“沙盒”:没错,
“创建时间”:“2013-10-27T13:41:00Z”,
“完成时间”:“2013-10-27T13:41:13Z”,
“source_文件”:{“id”:2,“name”:“testfile.pdf”,“size”:90571},
“目标_文件”:[{}],
“目标格式”:“png”,
“信用成本”:0
}
其中
状态
参数为
转换
,而
目标文件
参数为空


有一种方法可以管理调用以返回响应的对象,但只有当
status
参数为
successfull
时才可以。谢谢一些API使用
wait=1
参数或类似的wait参数。否则,您必须进行轮询(可能是不同的url)


有关详细信息,请参阅API文档。

根据建议,请求: (客户机在范围级别实例化)

for(int-trunt=0;trunt