シグナル「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 で飛んでいるのがわかりますが、それらのデータを取得できないようです。手に入れる方法を知っている人はいますか?ありがとう!