我正在使用这个API,它接受图像并返回其内容的描述。根据文档,cURL看起来像这样:
curl -i -X POST
-H "Authorization: CloudSight [key]"
-F "image_request[image]=@Image.jpg"
-F "image_request[locale]=en-US"
https://api.cloudsightapi.com/image_requests
我发送请求的代码如下:
var request = (HttpWebRequest)WebRequest.Create(cloudsight_url);
request.Method = "POST";
request.Headers.Add("Authorization", "CloudSight R6USrcKxMym0EP2peuYtVA");
string s1 = string.Format("image_request[locale]={0}&image_request[remote_image_url]={1}", "en-US", imgurl);
// Send Data
StreamWriter myWriter = null;
myWriter = new StreamWriter(request.GetRequestStream());
myWriter.Write(s1);
myWriter.Close();
var response1 = (HttpWebResponse)request.GetResponse();
string result2 = "";
using (StreamReader streamReader = new StreamReader(response1.GetResponseStream()))
{
var output = streamReader.ReadToEnd();
streamReader.Close();
result2 = output.ToString();
}
请求发送成功,但是服务返回{ "status" : "not completed" }
。在文档中,它说继续轮询响应,直到返回{ "status" : "completed" }
响应。我该如何做到这一点?
正如您所指出的,文档指出您应该继续轮询,直到标记完成响应为止。
你真正需要做的就是把你的HTTP web请求放入一个循环,直到完成。在一段时间后退出循环,避免无限循环也是一个好主意。将循环放到单独的线程中也可能是明智的。