2017-01-05 21 views
1

Ich mache etwas Code, wo ich eine GET-Anfrage machen muss und die erhaltenen Informationen manipuliere. Dazu i C++ REST SDK (Codename "Casablanca") bin mit der AnfrageC++ Debug-Assertion fehlgeschlagen auf HTTP-Anfrage

Dies ist mein Code

#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(); 
    //... 
} 

Und wenn ich debug verwenden erhalte ich Fehler in der folgenden Zeile:

client.request (Methoden :: GET) zurückkehren .then ([] (http_response response)

Mit debug ich sehe, dass Variable "Client" Inhalt hat, aber ich immer noch diese Fehlermeldung erhalten:

Image with the Error Message

ich den Fehler google, und die meisten Leute sagen, dass es Fehler auf dem Code ist (versuchen, einige Teile des Speichers zuzugreifen) ...

Irgendwelche Ideen?

+0

An anderer Stelle haben Sie möglicherweise '__acrt_first_block == header' und dies wird als Assertion verwendet, was fehlschlägt (' false'). Der Microsoft-Code, den Sie in Ihre Frage eingefügt haben, führt diese Assertion durch und zeigt sie an ... Sie müssen also möglicherweise weitere Details hinzufügen, damit die Leute Ihnen helfen können. – CPHPython

+0

Ich suchte in allen Dateien aus dem Projekt und ich fand keine "__acrt_first_block == Header". Der Code über dem Code all dies habe ich in diesem Projekt – Tazz

+0

Jetzt habe ich das Problem behoben. Jetzt habe ich anderes Problem mit dem Antwortkörper, der immer 1 zurückgibt, aber ich werde es reparieren !. Danke allen für die Hilfe! :) – Tazz

Antwort

1

Dieses Problem kann auftreten, wenn die cpprestsdk DLL mit Multi-Threaded DLL/MD bauen ist und die anrufende Bibliothek ist mit Multi-Threaded/MT bauen. Da cpprestdk keine Konfiguration für eine .lib-Datei anbietet, müssen Sie /MD verwenden. Zumindest ist das meines Wissens am besten, da ich cpprestdk.lib nicht ohne einen Haufen Linker-Fehler aus der Box kompilieren konnte.

Verwandte Themen