Tag: http

如何解析HTTP POST(文件上传)流?

我使用actionscript引擎上传文件,引擎将选择文件并通过网络通过HTTP POST命令发送文件,该文件说POST消息如下: POST /handler.cfm HTTP/1.1 Accept: text/* Content-Type: multipart/form-data; boundary=———-Ij5ae0ae0KM7GI3KM7ei4cH2ei4gL6 User-Agent: Shockwave Flash Host: www.example.com Content-Length: 421 Connection: Keep-Alive Cache-Control: no-cache ————Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 Content-Disposition: form-data; name=”Filename” MyFile.jpg ————Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 Content-Disposition: form-data; name=”photo”; filename=”MyFile.jpg” Content-Type: application/octet-stream FileDataHere ————Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 Content-Disposition: form-data; name=”Upload” Submit Query ————Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7– 在服务器端,我有一个C ++程序侦听端口80并解析POST消息。 我只想要文件名和文件数据。 如何使用c ++解码文件数据,它是base64编码的,是否有一个库可以为我做? 我想解码二进制文件,并将其写入文件,谢谢!

字符串引用未在C ++中的函数调用中更新

我正在写一个arduino库来在网上发布http请求。 我正在使用http://arduino.cc/en/Tutorial/TextString中的String类 当我在函数调用后引用我定义的字符串对象时,我的代码表现得很奇怪。 实际上,我试图获取我的GET请求的主体并从http GET请求的响应中删除http标头。 以下是描述: 方法调用: String body; if(pinger.Get(host,path,&body)) { Serial.println(“Modified String Outside :”); Serial.println(body); Serial.println(); Serial.println(“Modified String Outside Address”); Serial.println((int)&body); } 产量 Modified String Outside : HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/html Content-Length: 113 Date: Wed, 13 Jan 2010 14:36:28 GMT Ashish Sharma Wed Jan 13 20:06:28 IST 2010 Modified String Outside […]

用libevent evhttp流客户端请求体?

我想用libevent和evhttp流式传输客户端POST请求主体。 我已经找到了使用固定主体发送请求的示例,但我不确定如何使用正文设置请求,我将需要在不确定的时间段内连续写入和更新。 有可能这样做会解放吗? 我目前的代码基线看起来像这样: #include #include #include void http_request_done(struct evhttp_request *req, void *arg) { printf(“DONE!\n”); } int main(int argc, char **argv) { struct event_base *base = event_base_new(); struct evhttp_connection *conn = evhttp_connection_base_new(base, NULL, “127.0.0.1”, 3000); struct evhttp_request *req = evhttp_request_new(http_request_done, NULL); evhttp_make_request(conn, req, EVHTTP_REQ_POST, “/”); evhttp_connection_set_timeout(req->evcon, 600); event_base_loop(base, EVLOOP_NONBLOCK); event_base_dispatch(base); return 0; } 如何使用流媒体发送POST请求?

libcurl http以json格式获取请求

有没有办法使用JSON格式的libcurl发送HTTP get请求? 我目前的要求是 curl_easy_setopt(curl_handle, CURLOPT_URL, “http://localhost:9200/_search?q=tag:warcraft”) 使用libcurl。 它相当于curl curl -XGET http://localhost:9200/_all/tweet/_search?q=tag:warcraft 我想使用libcurl发送以下curl请求(以json格式)。 curl -XGET http://localhost:9200/_search -d ‘{ “query” : { “term” : { “tag”: “warcraft” } } }’ 我想知道发送上述请求的等效libcurl代码。 谢谢。

无法使HTTP POST请求正常工作

我正在尝试使用HTTP POST请求从我正在使用的游戏中发送文件到游戏的网站。 当我使用HTML页面上的表单发送文件时,它工作正常。 但是,我无法在游戏中模拟同样的事情。 我收到响应代码200表示请求成功,但是,上传脚本表明它收到了GET请求,$ _FILES和$ _POST数组为空。 我已经查看了HTML表单的POST和Wireshark中的游戏POST的输出,但是无法检测到两者之间有任何有意义的差异。 (如果我知道如何完全复制HTML表单的POST方法,我会,但我不认为这是可能的。) 无论如何,这是我用来发送它的代码。 谢谢! HINTERNET hInternet; HINTERNET hConnect; HINTERNET hRequest; INTERNET_BUFFERS Buffers; DWORD dwBytesWritten; DWORD dwNumBytesToWrite; char szBoundary[32]; char szContentTypeHeader[64]; char szFileHeader[256]; char szFileFooter[4]; char szBodyFooter[32]; ULONG ulTotalBytesWritten; ULONG ulOffset; ULONG ulContentLength; // Get a handle for working with the Internet. hInternet = InternetOpen( “Wrack”, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, […]

Libevent:multithreading处理HTTP保持连接

我正在使用Libevent在C中编写HTTP反向代理,我想实现multithreading以利用所有可用的CPU内核。 我看了一下这个例子: http : //roncemer.com/software-development/multi-threaded-libevent-server-example/ 在这个例子中,似乎一个线程用于连接的整个持续时间,但对于HTTP 1.1,我不认为这将是最有效的解决方案,因为默认情况下连接在每个请求后保持活动状态,以便它们可以重用后来。 我注意到,即使一个浏览器面板也可以打开几个连接到一个服务器并保持打开,直到选项卡关闭,这将立即耗尽线程池。 对于HTTP 1.1代理,将有许多开放连接,但只有极少数人在给定时刻主动传输数据。 所以我在想一个替代方案,为所有传入连接创建一个事件库,并将事件回调函数委托给工作线程。 这样我们可以有许多打开的连接,只有当数据到达连接时才使用线程,一旦处理完数据就将其返回池中。 我的问题是:这是一个与Libevent合适的线程实现吗? 具体而言 – 是否需要在每个连接中都有一个事件库,如示例中所示,或者所有连接都足够? 另外 – 我还应该注意其他任何问题吗? 目前我能看到的唯一问题是突发性,当在许多小块中接收到数据时,每个HTTP响应触发许多读取事件,这将导致大量切换到工作线程。 这会是个问题吗? 如果它会,那么使用Libevent的水印可能会有点否定,虽然我不确定如果请求到达两个块并且第二个块足够小以使缓冲区大小低于水印,这是如何工作的。 它会留在那里直到更多数据到来吗? 此外,我需要实现调度,以便只有在前一个块完全发送后才会发送一个块。 我想到的第二个问题是当线程池耗尽时,即所有线程当前正在执行某些操作,并且发生另一个读取事件 – 这将导致读取事件回调阻塞。 那有关系吗? 我想把这些放到另一个队列中,但肯定这正是事件库内部发生的事情。 另一方面,第二个队列可能是组织块的调度而不阻塞工作线程的好方法。

获取FastCGI中的所有客户端头文件(C / C ++)

目前我有点问题: 我想为nekoVM创建FastCGI / CGI绑定。 这是通过编写VM加载的一些线索C / C ++代码来完成的。 我想使我的绑定行为尽可能与neko本机API(mod_neko,mod_tora)兼容。 使用mod_neko,可以获取客户端发送的所有HTTP头。 据我所知,只有通过调用getenv(‘header_name’)才能获得FastCGI的HTTP头。 要使用此function,您需要知道所有标题的名称。 我的问题:是否有可能获得客户端发送的所有标头?

适用于C的HTTP POST / GET的轻量级库?

我打算为Windows中的音乐播放器创建一个Last.FM scrobbler插件。 Last.FM提交API在HTTP / 1.1 GET和POST上进行中继。 我从来没有完成面向Internet的编程,我仍然知道HTTP协议,但我想开始玩它发送和获取一些数据。 我看过Winsock界面,但我不知道使用任何更简单的东西是否更好。 你们中的任何人都知道我该怎么办? 我能用什么? 如果是这样,你能指点我一个教程吗? 如果它是一个库,我可以静态链接它,我想只提供插件的DLL。

HTTP协议:消息体的结尾

我构建了一个解析标题的程序,我希望在收到POST时读取消息正文。 对于标题,我已经能够查找以确定标题何时结束。 我对邮件正文有更多问题。 我是否应该查看“内容长度”字段以了解何时停止阅读输入? 在我当前的代码(下面)中,它不会停止,直到我在Firefox中遇到红叉(停止加载页面)。 这是代码: size_t n; unsigned char newChar; int index = 0; int capacity = 50; char *option = (char *) malloc(sizeof(char) * capacity); while ( ( n = read( req->socket, &newChar, sizeof(newChar) ) ) > 0 ) { if (newChar == ‘\0’ || newChar == ‘\n’) break; // This is not […]

如何使用C程序直播video。 什么应该是HTTP回复? 如果可能,我如何使用分块编码?

(实际问题已被编辑,因为我成功地进行了直播,但现在我不理解客户端和我的C代码之间的通信。) 好吧,我终于使用我的C代码进行直播。 但我不能理解“HTTP”是如何在这里工作的。 我使用wireshark在链接http://www.flumotion.com/demosite/webm/上研究了我的浏览器和服务器的通信。 我发现客户端首先发送此GET请求 GET /ahiasfhsasfsafsgfg.webm HTTP/1.1 Host: localhost Connection: keep-alive Referer: file:///home/anirudh/Desktop/anitom.html User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.98 Safari/534.13 Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.8 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 Range: bytes=0-1024 对于此获取请求,服务器通过发送此回复来响应 HTTP/1.0 200 OK Date: Tue, 01 Mar 2011 06:14:58 GMT Connection: close Cache-control: private Content-type: video/webm Server: FlumotionHTTPServer/0.7.0.1 然后服务器发送数据,直到客户端断开连接。 […]