2017-05-22 4 views
1

Ein client.connect(web::uri) ist erforderlich, aber nach dem Blick in web::uri wird eine Zeichenfolge nicht akzeptiert. Die API scheint zu sagen, dass sie eine Zeichenfolge akzeptieren kann, aber es wird nicht und ich kann nicht herausfinden, warum.Wie kann ich ein web :: uri aus einer Zeichenfolge erstellen, die in client.connect() eingefügt werden soll?

#include <iostream> 
#include <stdio.h> 
#include <cpprest/ws_client.h> 

using namespace std; 
using namespace web; 
using namespace web::websockets::client; 

int main(int argc, char **args) { 

    uri link = uri("ws://echo.websocket.org"); //PROBLEM LINE 
    websocket_client client;  
    client.connect(link).wait(); 

    websocket_outgoing_message out_msg; 
    out_msg.set_utf8_message("test"); 
    client.send(out_msg).wait(); 

    client.receive().then([](websocket_incoming_message in_msg) { 
     return in_msg.extract_string(); 
    }).then([](string body) { 
     cout << body << endl; 
    }).wait(); 

    client.close().wait(); 

    return 0; 
} 
+2

Welche Fehlermeldung erhalten Sie? –

+0

Es dauert ein 'Dienstprogramm :: char_t *' kein C-String. –

+0

Wenn Ihre Frage zufriedenstellend beantwortet wurde, wäre es nett, wenn Sie die Antwort als "akzeptiert" markieren und die Antwort als besonders hilfreich empfinden. Vielen Dank! – Rook

Antwort

3

Ein kurzer Blick auf den source von uri zeigt, dass es ein Konstruktor ist, die ein String-Argument, aber es ist nicht ein einfacher und einfacher C-Typ string:

_ASYNCRTIMP uri(const utility::char_t *uri_string); 

Wenn Sie Aufbau dieses unter Windows, können Sie feststellen, dass utility::char_t in der Tat ist wchar_t, so könnten Sie Ihre URI-Zeichenfolge mit einem L-Präfix zu markieren als Breitzeichen Unicode, wie folgt aus:

uri link = uri(L"ws://echo.websocket.org"); 

Ich glaube, dass es ein komfortables plattformübergreifendes String-Makro gibt, das von der Bibliothek U() bereitgestellt wird. Werfen Sie einen Blick auf die FAQ. Ich nehme an, es funktioniert ein bisschen wie folgt:

uri link = uri(U("ws://echo.websocket.org")); 
Verwandte Themen