从文件中解析http响应

时间:2012-09-21 10:41:29

标签: c curl libcurl

我有一个http响应,我使用以下调用

在文件中写入
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, responseCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, responseFile); 

static size_t responseCallback(void *ptr, size_t size, size_t nmemb, void *userdata)
{
   int written = fwrite(ptr, size, nmemb, (FILE *)userdata);
   return written;
}

现在我正在尝试使用

从文件中读回该数据
void getAccessToken()
{
  long len;
  char *buf;
  fseek(responseFile,0,SEEK_SET); //go to beg.
  fseek(responseFile,0,SEEK_END); //go to end
  len=ftell(responseFile); //get position at end (length)
  fseek(responseFile,0,SEEK_SET); //go to beg.
  buf=new char[len];
  fread(buf,len,1,responseFile); //read into buffer

      //some operation to be performed on buf

  delete [] buf;

}   

我想要执行的操作是检索我在http响应中收到的特定标记(可以使用strtok完成)。我已经能够获取数据,但最后一些垃圾字符也出现了。 此外,文件的大小是1743字节(相同大小的数据由curl回调函数写入)但buf正在填充,直到3510字节的数据。这怎么可能?有线索吗?

1 个答案:

答案 0 :(得分:1)

  

我在这里做错了什么?

是的,您根本没有跟踪返回值。 I / O调用可能会失败,您必须根据结果检查返回值。