使用http parser解析URL

2021-06-14 10:54:22 字數 1212 閱讀 3237

用c語言編寫http應用,解析url是乙個繁瑣的事兒。前幾天使用http_parser實現httpclient,發現裡面提供了乙個解析url的方法http_parser_parse_url,用起來相當方便。

http_parser_parse_url通過分析url字串,把port、host、path、schema之類的資訊儲存在乙個結構體http_parser_url中。通過看標頭檔案和原始碼,發現這個結構體僅僅是記錄了url中各部分資訊的起始位置、長度,沒有做任何記憶體拷貝,效率上看還是不錯的。目前支援schema、port、host、path、query、userinfo、fragment七種資訊的提取。

http_parser_url定義如下:

其中,field_set成員用於檢測解析到了哪種資訊(使用位與操作),field_data存放相應的url資訊在原始url中的起始位置和長度。

http_parser_parse_url()方法的原型:

需要說明的是is_connect引數,當傳1時,http_parser_parse_url方法將進行嚴格檢驗,如果url中沒有port、schema將導致http_parser_parse_url方法失敗,返回非0值。一般給is_connect方法傳0即可。

下面是我使用的一段**:

上面的**是我實現的http_client中的一部分,僅供參考。

解析python 命令的 u引數

今天在看arcface的訓練 在shell指令碼中執行python 命令時後面加了 u 引數 python u xx.py 於是對這個引數進行了下小研究。用網上的乙個程式示例來說明,python中標準錯誤 std.err 和標準輸出 std.out 的輸出規則 標準輸出預設需要快取後再輸出到螢幕,而...

python命令 u引數用法解析

在shell指令碼中執行python 命令時後面加了 u 引數 python u xx.py 這個 u表示什麼?import sys sys.stdout.write stdout1 sys.stderr.write stderr1 sys.stdout.write stdout2 sys.stde...

python u 解析python 命令的 u引數

在shell指令碼中執行python 命令時後面加了 u 引數 python u xx.py 這個 u表示什麼?importsys sys.stdout.write stdout1 sys.stderr.write stderr1 sys.stdout.write stdout2 sys.stder...