2017-01-05 2 views
1

Я делаю код, где мне нужно выполнить запрос GET и манипулировать полученной информацией. Для этого я использую C++ REST SDK (кодовое название «Касабланка») для запросаC++ Утверждение отладки с ошибкой HTTP-запроса

Это мой код

#include <cpprest/http_client.h> 
#include <cpprest/filestream.h> 

using namespace utility;      
using namespace web;       
using namespace web::http;     
using namespace web::http::client;   
using namespace concurrency::streams;  


//This method i saw on the Microsoft documentation 
pplx::task<void> HTTPStreamingAsync() 
{  
    http_client client(L"http://localhost:10000/Something"); //The api is running at the moment 

    // Make the request and asynchronously process the response. 

    return client.request(methods::GET).then([](http_response response) 
    { 
     // Print the status code. 
     std::wostringstream ss; 
     ss << L"Server returned returned status code " << response.status_code() << L'.' << std::endl; 
     std::wcout << ss.str(); 

     // TODO: Perform actions here reading from the response stream. 
     auto bodyStream = response.body(); 

     // In this example, we print the length of the response to the console. 
     ss.str(std::wstring()); 
     ss << L"Content length is " << response.headers().content_length() << L" bytes." << std::endl; 
     std::wcout << ss.str(); 
    }); 
} 



void main(int argc, char **argv) 
{ 
    HTTPStreamingAsync().wait(); 
    //... 
} 

И когда я использую отладки я получаю ошибку на следующей строке:

вернуться client.request (методы :: GET) .Затем ([] (http_response ответ)

С отладки я вижу, что переменная "клиент" имеет содержание, но я все еще получаю эту ошибку:

Я Google это ошибка, и большинство людей говорят, что это ошибка кода (пытается получить доступ к некоторым частям памяти) ...

Любые идеи?

+0

В другом месте у вас может быть '__acrt_first_block == header', и это используется как утверждение, которое не выполняется (' false'). Код Microsoft, который вы вставили в свой вопрос, выполняет это утверждение и указывает его ... Поэтому вам может потребоваться добавить более подробную информацию, чтобы люди могли вам помочь. – CPHPython

+0

Я искал во всех файлах проекта, и я не нашел ни одного «__acrt_first_block == header». Код выше всего его кода, который у меня есть в этом проекте. – Tazz

+0

Теперь я исправил проблему. Теперь у меня есть другая проблема с телом ответа, который всегда возвращает 1, но я исправлю это !. Спасибо всем за помощь! :) – Tazz

ответ

1

Эта проблема может произойти, когда cpprestsdk DLL построен с Multi-Threaded DLL/MD и вызывающая библиотека построена с Multi-Threaded/MT. Поскольку cpprestsdk не предлагает конфигурацию для .lib-файла, вы вынуждены использовать /MD. Насколько мне известно, это, насколько мне известно, поскольку я не смог скомпилировать cpprestsdk.lib из коробки без кучи ошибок компоновщика.

 Смежные вопросы

  • Нет связанных вопросов^_^