簡體   English   中英

如何在APACHE2.2中發出HTTP請求並向另一台服務器發送數據

[英]How to make http request and send data another server in APACHE2.2

我正在開發一個apache插件,它將從請求標頭中獲取一些數據,並需要將數據發送到另一台服務器。 我嘗試了apr_socket_sento()和apr_socket_create(),但是它們都不起作用。 請告訴我如何在apache2.2插件中從另一台服務器發送或獲取數據。

請參閱ANS如何從服務器發送和接收數據。

char* post_data_server_sync(request_rec *r,char *host,char *payload,int timout)
{
char buffer[1024];
char *hostname=host;
char *final_msg;
char *msg = "POST /getRequestData HTTP/1.1\r\n"\
            "HOST: %s\r\n" \
            "Accept: */*\r\n"\
            "Connection: keep-alive\r\n"\
            "Content-Length: %d\r\n"\
            "Content-Type: application/x-www-form-urlencoded\r\n\n%s";
apr_socket_t *new_sock;
apr_sockaddr_t *addr;
apr_port_t port_no=80;
apr_status_t result;
apr_interval_time_t tmout=timout;
apr_size_t *size=apr_palloc(r->pool,sizeof(apr_size_t));
apr_size_t *size_rcv=apr_palloc(r->pool,sizeof(apr_size_t));
final_msg=apr_psprintf(r->pool,msg,host,strlen(payload),payload);
result=apr_socket_create(& new_sock,APR_INET,SOCK_STREAM,APR_PROTO_TCP,r->pool);
result=apr_sockaddr_info_get(&addr,hostname,APR_INET,port_no,0,r->pool);
result=apr_socket_connect(new_sock,addr);
*size=strlen(final_msg);
result=apr_socket_sendto(new_sock,addr,0,final_msg,size);
if(result==APR_SUCCESS)
{
    *size_rcv=sizeof(buffer);
   result=apr_socket_recvfrom(addr,new_sock,0,buffer,size_rcv);
}
result=apr_socket_close(new_sock);
return buffer;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM