3

シグナル「resource-request-starting」を処理するときに提供されたデータを調べると、ポスト リクエストがシグナルでも送信されていることがわかります。

static gboolean resourceRequestStartingWebViewCb(
WebKitWebView *web_view,
WebKitWebFrame *web_frame,
WebKitWebResource *web_resource,
WebKitNetworkRequest *request,
WebKitNetworkResponse *response,
gpointer user_data)
    {
        printf("RESOURCE REQUEST STARTING");
        analyzeRequest(request);
        return FALSE;
    }

ただし、投稿されたデータは次のとおりではありません。

static void analyzeRequest(WebKitNetworkRequest *request)
{
    const char* uri=webkit_network_request_get_uri(request);
    printf(" for %s.\n",uri);

    SoupMessage* soupMessage=NULL;
    if(request!=NULL) //REQUEST VALID
    {
        soupMessage=webkit_network_request_get_message(request);
        printf("valid request\n");
    }

    SoupMessageBody* request_body=NULL;
    if(soupMessage!=NULL) //SOUP MESSAGE VALID
    {
        request_body=soupMessage->request_body;
        printf("valid soup message\n");
        printf("method: %s\n",soupMessage->method);
    }

    SoupBuffer* soupBuffer=NULL;
    if(request_body!=NULL) //REQUEST BODY VALID
    {
        //THIS SHOULD LOAD THE POST DATA, NO ???
        soupBuffer=soup_message_body_flatten(request_body);
        printf("valid request_body\n");
    }

    const char* requestData=NULL;
    gsize requestLength=0;
    if(soupBuffer!=NULL) //SOUP BUFFER VALID
    {
        requestData=soupBuffer->data;
        printf("valid soup buffer\n");
        requestLength=soupBuffer->length;
        printf("length:%d\n",requestLength);
    }

    if(requestData!=NULL) //REQUEST DATA VALID
    {
        printf("request data\n%s\n",requestData);
        printf("valid request_data\n");
    }
}

POST メソッドのリクエストが stdout で飛んでいるのがわかりますが、それらのデータを取得できないようです。手に入れる方法を知っている人はいますか?ありがとう!

4

0 に答える 0