HttpdnsNWHTTPClient 瘚贝<E7989A>憟𦯀辣
<EFBFBD>祉𤌍敶訫<EFBFBD><EFBFBD>?HttpdnsNWHTTPClient <20>?HttpdnsNWReusableConnection <20><><EFBFBD><EFBFBD>湔<EFBFBD>霂訫<E99C82>隞嗚<E99A9E>?
瘚贝<EFBFBD><EFBFBD><EFBFBD>辣蝏𤘪<EFBFBD>
TrustHttpDNSTests/Network/
<0A>鎿<EFBFBD><E98EBF><EFBFBD> HttpdnsNWHTTPClientTests.m # 銝餃<E98A9D><E9A483><EFBFBD><EFBFBD>霂𤏪<E99C82>44銝迎<E98A9D>
<0A>鎿<EFBFBD><E98EBF><EFBFBD> HttpdnsNWHTTPClientIntegrationTests.m # <20><><EFBFBD>瘚贝<E7989A>嚗?銝迎<E98A9D>
<0A>鎿<EFBFBD><E98EBF><EFBFBD> HttpdnsNWHTTPClientTestHelper.h/m # 瘚贝<E7989A>颲<EFBFBD>𨭌撌亙<E6928C>蝐?
<0A>婙<EFBFBD><E5A999><EFBFBD> README.md # <20>祆<EFBFBD>隞?
瘚贝<EFBFBD>閬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>凒
<EFBFBD>訫<EFBFBD>瘚贝<EFBFBD> (HttpdnsNWHTTPClientTests.m)
A. HTTP 閫<><E996AB><EFBFBD>餉<EFBFBD>瘚贝<E7989A> (25銝?
-
A1. Header 閫<><E996AB> (9銝?
- 甇<EFBFBD>虜<EFBFBD>滚<EFBFBD>閫<EFBFBD><EFBFBD>
- 憭帋葵憭湧<EFBFBD>摮埈挾
- 銝滚<EFBFBD><EFBFBD>湔㺭<EFBFBD>桀<EFBFBD><EFBFBD>?
- <EFBFBD>䭾<EFBFBD><EFBFBD>嗆<EFBFBD><EFBFBD><EFBFBD>
- 蝛箸聢憭<EFBFBD><EFBFBD>銝?trim
- 蝛箏<EFBFBD>澆仍<EFBFBD>?
- <EFBFBD>墧㺭摮㛖𠶖<EFBFBD><EFBFBD><EFBFBD>
- <EFBFBD>嗆<EFBFBD><EFBFBD><EFBFBD>銝粹妟
- <EFBFBD>䭾<EFBFBD>憭湧<EFBFBD>銵?
-
A2. Chunked 蝻𣇉<E89DBB>璉<EFBFBD><E79289>?(8銝?
- <EFBFBD>蓥葵 chunk
- 憭帋葵 chunks
- 銝滚<EFBFBD><EFBFBD>?chunk
- Chunk extension <20>舀<EFBFBD>
- <EFBFBD>䭾<EFBFBD><EFBFBD><EFBFBD><EFBFBD>餈𥕦<EFBFBD> size
- Chunk size 皞W枂
- 蝻箏<EFBFBD> CRLF 蝏<>迫蝚?
- 撣?trailers <20>?chunked
-
A3. Chunked 閫<><E996AB> (2銝?
- 憭帋葵 chunks 甇<>&閫<EFBC86><E996AB>
- <EFBFBD>䭾<EFBFBD><EFBFBD>澆<EFBFBD>餈𥪜<EFBFBD> nil
-
A4. 摰峕㟲<E5B395>滚<EFBFBD>閫<EFBFBD><E996AB> (6銝?
- Content-Length <20>滚<EFBFBD>
- Chunked 蝻𣇉<E89DBB><F0A38789>滚<EFBFBD>
- 蝛?body
- Content-Length 銝滚龪<E6BB9A>?
- 蝛箸㺭<EFBFBD>桅<EFBFBD>霂?
- <EFBFBD>芣<EFBFBD> headers <20>?body
C. 霂瑟<E99C82><E7919F><EFBFBD>遣瘚贝<E7989A> (7銝?
- <EFBFBD>箸𧋦 GET 霂瑟<E99C82><E7919F>澆<EFBFBD>
- <EFBFBD>亥砭<EFBFBD><EFBFBD>㺭憭<EFBFBD><EFBFBD>
- User-Agent 憭湧<E686AD>
- HTTP 暺䁅恕蝡臬藁憭<E89781><E686AD>
- HTTPS 暺䁅恕蝡臬藁憭<E89781><E686AD>
- <EFBFBD>鮋<EFBFBD>霈斤垢<EFBFBD><EFBFBD>遬蝷?
- <EFBFBD>箏<EFBFBD>憭湧<EFBFBD>撉諹<EFBFBD>
E. TLS 撉諹<E69289>瘚贝<E7989A> (4銝芸<E98A9D>雿滨泵)
- <EFBFBD>㗇<EFBFBD>霂<EFBFBD>髡餈𥪜<EFBFBD> YES
- Proceed 蝏𤘪<E89D8F>餈𥪜<E9A488> YES
- <EFBFBD>䭾<EFBFBD>霂<EFBFBD>髡餈𥪜<EFBFBD> NO
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>笔<EFBFBD>雿輻鍂 SSL Policy
*瘜剁<E7989C>TLS 瘚贝<E7989A><E8B49D><EFBFBD>閬<EFBFBD><E996AC>摰䂿<E691B0> SecTrustRef <20>硋<EFBFBD><E7A18B>?mock嚗<6B><E59A97><EFBFBD>滢蛹<E6BBA2>牐<EFBFBD>蝚?
F. 颲寧<E9A2B2><E5AFA7><EFBFBD><EFBFBD>瘚贝<E7989A> (8銝?
- 頞<EFBFBD>鵭 URL 憭<><E686AD>
- 蝛?User-Agent
- 頞<EFBFBD>之<EFBFBD>滚<EFBFBD>雿橒<EFBFBD>5MB嚗?
- Chunked 閫<><E996AB>憭梯揖<E6A2AF>鮋<EFBFBD><E9AE8B>
- 餈墧𦻖瘙?key - 銝滚<E98A9D> hosts
- 餈墧𦻖瘙?key - 銝滚<E98A9D> ports
- 餈墧𦻖瘙?key - HTTP vs HTTPS
<EFBFBD><EFBFBD><EFBFBD>瘚贝<EFBFBD> (HttpdnsNWHTTPClientIntegrationTests.m)
雿輻鍂 httpbin.org 餈𥡝<E9A488><F0A5A19D>笔<EFBFBD>蝵𤑳<E89DB5>瘚贝<E7989A> (22銝?嚗?
G. <20>箇<EFBFBD><E7AE87><EFBFBD><EFBFBD>瘚贝<E7989A> (7銝?
- HTTP GET 霂瑟<E99C82>
- HTTPS GET 霂瑟<E99C82>
- HTTP 404 <20>滚<EFBFBD>
- 餈墧𦻖憭滨鍂嚗<EFBFBD>舅甈∟窈瘙<EFBFBD><EFBFBD>
- Chunked <20>滚<EFBFBD>憭<EFBFBD><E686AD>
- 霂瑟<EFBFBD>頞<EFBFBD>𧒄瘚贝<EFBFBD>
- <EFBFBD>芸<EFBFBD>銋匧仍<EFBFBD>券<EFBFBD>霂?
H. 撟嗅<E6929F>瘚贝<E7989A> (5銝?
- 撟嗅<EFBFBD>霂瑟<EFBFBD><EFBFBD>䔶<EFBFBD>銝餅㦤嚗?0銝芰瑪蝔页<E89D94>
- 撟嗅<EFBFBD>霂瑟<EFBFBD>銝滚<EFBFBD>頝臬<EFBFBD>嚗?銝芯<E98A9D><E88AAF>𨫪ndpoint嚗?
- 瘛瑕<EFBFBD> HTTP + HTTPS 撟嗅<E6929F>嚗<EFBFBD><E59A97>5銝芰瑪蝔页<E89D94>
- 擃䁅<EFBFBD>頧賢<EFBFBD><EFBFBD>𥟇<EFBFBD>霂𤏪<EFBFBD>50銝芸僎<EFBFBD>𤏸窈瘙<EFBFBD><EFBFBD>
- 瘛瑕<EFBFBD>銝脰<EFBFBD>+撟嗅<E6929F>璅∪<E79285>
I. 蝡墧<E89DA1><E5A2A7>辺隞嗆<E99A9E>霂?(5銝?
- 餈墧𦻖瘙惩捆<EFBFBD>𤩺<EFBFBD>霂𤏪<EFBFBD>頞<EFBFBD><EFBFBD>4銝芾<EFBFBD><EFBFBD>乩<EFBFBD><EFBFBD>琜<EFBFBD>
- <EFBFBD>峕𧒄敶坿<EFBFBD>餈墧𦻖嚗?銝芸僎<E88AB8>𡢅<EFBFBD>
- <EFBFBD>瑕<EFBFBD>-敶坿<E695B6>-<2D>滩繮<E6BBA9>𣇉<EFBFBD><F0A38789>?
- 頞<EFBFBD>𧒄銝擧暑頝<EFBFBD><EFBFBD><EFBFBD>亙<EFBFBD>蝒<EFBFBD><EFBFBD><EFBFBD><EFBFBD>31蝘𡜐<EFBFBD><EFBFBD>航歲餈<EFBFBD><EFBFBD>
- <EFBFBD>躰秤<EFBFBD>W<EFBFBD><EFBFBD>舘<EFBFBD><EFBFBD>交<EFBFBD><EFBFBD>亙熒<EFBFBD>嗆<EFBFBD>?
J. 擃条漣餈墧𦻖憭滨鍂瘚贝<E7989A> (5銝?
- 餈墧𦻖餈<EFBFBD><EFBFBD>銝擧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>31蝘𡜐<EFBFBD><EFBFBD>航歲餈<EFBFBD><EFBFBD>
- 餈墧𦻖瘙惩捆<EFBFBD>誯<EFBFBD><EFBFBD>園<EFBFBD>霂<EFBFBD><EFBFBD>10銝芾<EFBFBD>蝏剛窈瘙<EFBFBD><EFBFBD>
- 銝滚<EFBFBD>頝臬<EFBFBD>憭滨鍂餈墧𦻖嚗?銝芯<E98A9D><E88AAF>諹楝敺<E6A59D><E695BA>
- HTTP vs HTTPS 雿輻鍂銝滚<E98A9D>餈墧𦻖瘙籑ey
- <EFBFBD>輯<EFBFBD><EFBFBD>乩<EFBFBD><EFBFBD><EFBFBD><EFBFBD>霂𤏪<EFBFBD>20銝芾窈瘙<EFBFBD>𡢿<EFBFBD>?蝘𡜐<E89D98><F0A19C90>航歲餈<E6ADB2><E9A488>
餈鞱<EFBFBD>瘚贝<EFBFBD>
餈鞱<EFBFBD><EFBFBD><EFBFBD><EFBFBD>匧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>霂?
xcodebuild test \
-workspace TrustHttpDNS.xcworkspace \
-scheme TrustHttpDNSTests \
-destination 'platform=iOS Simulator,name=iPhone 15' \
-only-testing:TrustHttpDNSTests/HttpdnsNWHTTPClientTests
餈鞱<EFBFBD><EFBFBD><EFBFBD><EFBFBD>瘚贝<EFBFBD>嚗<EFBFBD><EFBFBD>閬<EFBFBD><EFBFBD>蝏頣<EFBFBD>
xcodebuild test \
-workspace TrustHttpDNS.xcworkspace \
-scheme TrustHttpDNSTests \
-destination 'platform=iOS Simulator,name=iPhone 15' \
-only-testing:TrustHttpDNSTests/HttpdnsNWHTTPClientIntegrationTests
餈鞱<EFBFBD><EFBFBD>蓥葵瘚贝<EFBFBD>
xcodebuild test \
-workspace TrustHttpDNS.xcworkspace \
-scheme TrustHttpDNSTests \
-destination 'platform=iOS Simulator,name=iPhone 15' \
-only-testing:TrustHttpDNSTests/HttpdnsNWHTTPClientTests/testParseHTTPHeaders_ValidResponse_Success
瘚贝<EFBFBD>颲<EFBFBD>𨭌撌亙<EFBFBD>
HttpdnsNWHTTPClientTestHelper
<EFBFBD>𣂷<EFBFBD>隞乩<EFBFBD>撌亙<EFBFBD><EFBFBD>寞<EFBFBD>嚗?
HTTP <20>滚<EFBFBD><E6BB9A><EFBFBD><EFBFBD>?
// <20><><EFBFBD>䭾<EFBFBD><E4ADBE>?HTTP <20>滚<EFBFBD>
+ (NSData *)createHTTPResponseWithStatus:(NSInteger)statusCode
statusText:(NSString *)statusText
headers:(NSDictionary *)headers
body:(NSData *)body;
// <20><><EFBFBD>?chunked <20>滚<EFBFBD>
+ (NSData *)createChunkedHTTPResponseWithStatus:(NSInteger)statusCode
headers:(NSDictionary *)headers
chunks:(NSArray<NSData *> *)chunks;
Chunked 蝻𣇉<E89DBB>撌亙<E6928C>
+ (NSData *)encodeChunk:(NSData *)data;
+ (NSData *)encodeLastChunk;
<EFBFBD>唳旿<EFBFBD><EFBFBD><EFBFBD>
+ (NSData *)randomDataWithSize:(NSUInteger)size;
+ (NSData *)jsonBodyWithDictionary:(NSDictionary *)dictionary;
瘚贝<EFBFBD>蝏蠘恣
| 瘚贝<EFBFBD>蝐餃<EFBFBD> | 瘚贝<EFBFBD><EFBFBD>圈<EFBFBD> | 閬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>凒 |
|---|---|---|
| HTTP 閫<><E996AB> | 25 | HTTP 憭湧<E686AD><E6B9A7><EFBFBD>hunked 蝻𣇉<E89DBB><F0A38789><EFBFBD><EFBFBD><EFBFBD>游<EFBFBD>摨? |
| 霂瑟<EFBFBD><EFBFBD><EFBFBD>遣 | 7 | URL 憭<><E686AD><EFBFBD><EFBFBD>仍<EFBFBD>函<EFBFBD><E587BD>? |
| TLS 撉諹<E69289> | 4 (<28>牐<EFBFBD>蝚? | 霂<EFBFBD>髡撉諹<EFBFBD> |
| 颲寧<EFBFBD><EFBFBD><EFBFBD><EFBFBD> | 8 | 撘<EFBFBD>虜颲枏<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>交<EFBFBD> key |
| <EFBFBD>訫<EFBFBD>瘚贝<EFBFBD><EFBFBD><EFBFBD>恣 | 43 | - |
| <EFBFBD>箇<EFBFBD><EFBFBD><EFBFBD><EFBFBD>瘚贝<EFBFBD> (G) | 7 | <EFBFBD>笔<EFBFBD>蝵𤑳<EFBFBD>霂瑟<EFBFBD><EFBFBD><EFBFBD>抅<EFBFBD>砍㦤<EFBFBD>? |
| 撟嗅<EFBFBD>瘚贝<EFBFBD> (H) | 5 | 憭𡁶瑪蝔见僎<EFBFBD>㻫<EFBFBD><EFBFBD><EFBFBD>韐蠘蝸 |
| 蝡墧<EFBFBD><EFBFBD>辺隞嗆<EFBFBD>霂?(I) | 5 | 餈墧𦻖瘙删<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>霂舀<EFBFBD>憭? |
| 餈墧𦻖憭滨鍂瘚贝<EFBFBD> (J) | 5 | 餈墧𦻖餈<EFBFBD><EFBFBD><EFBFBD><EFBFBD>鵭餈墧𦻖<EFBFBD><EFBFBD><EFBFBD>霈桅<EFBFBD>蝳? |
| 憭𡁶垢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>仿<EFBFBD>蝳?(K) | 5 | 銝滚<EFBFBD>蝡臬藁<EFBFBD>祉<EFBFBD>餈墧𦻖瘙? |
| 蝡臬藁瘙㰘<EFBFBD>堒偷瘚贝<EFBFBD> (L) | 3 | 憭𡁶垢<EFBFBD><EFBFBD><EFBFBD>韐蠘蝸<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𠉛氖 |
| 颲寧<EFBFBD><EFBFBD>∩辣撉諹<EFBFBD> (M) | 4 | 蝡臬藁餈<EFBFBD>宏<EFBFBD><EFBFBD><EFBFBD>蝡臬藁<EFBFBD>圈<EFBFBD> |
| 撟嗅<EFBFBD>憭𡁶垢<EFBFBD><EFBFBD>㦤<EFBFBD>?(N) | 3 | 撟嗉<EFBFBD> keep-alive<76><65>蔭霂W<E99C82><EFBCB7>? |
| <EFBFBD><EFBFBD><EFBFBD>瘚贝<EFBFBD><EFBFBD><EFBFBD>恣 | 37 | - |
| <EFBFBD>餉恣 | 80 | - |
敺<EFBFBD><EFBFBD><EFBFBD>唳<EFBFBD>霂𤏪<EFBFBD><EFBFBD>舫<EFBFBD>㚁<EFBFBD>
隞乩<EFBFBD>瘚贝<EFBFBD>蝏<EFBFBD><EFBFBD><EFBFBD>𠰴<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Mock <20>箸艶嚗<E889B6>虾<EFBFBD>寞旿<E5AF9E><E697BF>閬<EFBFBD>溶<EFBFBD>𩤃<EFBFBD>
B. 餈墧𦻖瘙删恣<E588A0><E681A3><EFBFBD>霂?(18銝?
<EFBFBD><EFBFBD>閬?Mock HttpdnsNWReusableConnection <20><><EFBFBD><EFBFBD>渡<EFBFBD><E6B8A1>賢𪂹<E8B3A2>?
D. 摰峕㟲瘚<E39FB2><E7989A>瘚贝<E7989A> (13銝?
<EFBFBD><EFBFBD>閬?Mock 餈墧𦻖瘙惩<E79899>蝵𤑳<E89DB5>撅<EFBFBD><E69285><EFBFBD><EFBFBD><EFBFBD><EFBFBD>箸艶
Mock Server 雿輻鍂
<EFBFBD><EFBFBD><EFBFBD>瘚贝<EFBFBD>雿輻鍂<EFBFBD>砍𧑐 mock server (127.0.0.1) <20>蹂誨 httpbin.org嚗峕<E59A97>靘𤤿迅摰𡁜虾<F0A1819C>删<EFBFBD>瘚贝<E7989A><E8B49D>臬<EFBFBD><E887AC>?
<EFBFBD>臬𢆡 Mock Server
cd TrustHttpDNSTests/Network
python3 mock_server.py
**瘜冽<E7989C>**嚗帋蝙<E5B88B>券<EFBFBD><E588B8>寞<EFBFBD>蝡臬藁嚗?1080/11443-11446嚗㚁<E59A97><E39A81>𣳇<EFBFBD> sudo <20><><EFBFBD><EFBFBD>?
餈鞱<EFBFBD><EFBFBD><EFBFBD><EFBFBD>瘚贝<EFBFBD>
<EFBFBD>典𡖂銝<EFBFBD>銝芰<EFBFBD>蝡舐<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
xcodebuild test \
-workspace TrustHttpDNS.xcworkspace \
-scheme TrustHttpDNSTests \
-destination 'platform=iOS Simulator,name=iPhone 15' \
-only-testing:TrustHttpDNSTests/HttpdnsNWHTTPClientIntegrationTests
Mock Server <20>寞<EFBFBD>?
- HTTP: <20>穃𨯬
127.0.0.1:11080 - HTTPS: <20>穃𨯬
127.0.0.1:11443,11444,11445,11446(<28>芰倌<E88AB0>滩<EFBFBD>銋? - **憭𡁶垢<F0A181B6><E59EA2>𤌍<EFBFBD>?*: 瘚贝<E7989A>餈墧𦻖瘙删<E79899>蝡臬藁<E887AC>𠉛氖<F0A0899B>箏<EFBFBD>
- 撟嗅<EFBFBD><EFBFBD>舀<EFBFBD>: 憭𡁶瑪蝔见<E89D94><E8A781><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟嗅<E6929F>瘚贝<E7989A>
- **<2A>嗅辣餈?*: <20>砍𧑐<E7A08D>滚<EFBFBD>嚗峕<E59A97>霂閖<E99C82>笔漲敹?
霂西<EFBFBD> MOCK_SERVER.md
瘜冽<EFBFBD>鈭钅★
-
<EFBFBD><EFBFBD><EFBFBD>瘚贝<EFBFBD>靘肽<EFBFBD> Mock Server嚗䫤HttpdnsNWHTTPClientIntegrationTests
雿輻鍂<E8BCBB>砍𧑐 mock server (127.0.0.1)<29><><EFBFBD>霂訫<E99C82><E8A8AB><EFBFBD><EFBFBD><EFBFBD>鍳<EFBFBD>?mock_server.py`<60>? -
**<2A>X<EFBFBD>霂閗歲餈?*嚗𡁻<E59A97><F0A181BB><EFBFBD><EFBFBD>霂閖<E99C82>閬<EFBFBD><E996AC>敺?1蝘𡜐<E89D98>瘚贝<E7989A>餈墧𦻖餈<F0A6BB96><E9A488>嚗㚁<E59A97><E39A81>航挽蝵桃㴓憓<E3B493><E68693><EFBFBD>?
SKIP_SLOW_TESTS=1頝唾<E9A09D>餈嗘<E9A488>瘚贝<E7989A>嚗?testRaceCondition_ExpiredConnectionPruning_CreatesNewConnectiontestConnectionReuse_Expiry31Seconds_NewConnectionCreatedtestConnectionReuse_TwentyRequestsOneSecondApart_ConnectionKeptAlive
-
**撟嗅<E6929F>瘚贝<E7989A>摰寥<E691B0>**嚗𡁜僎<F0A1819C>穃<EFBFBD><E7A983>见<EFBFBD>瘚贝<E7989A><E8B49D><EFBFBD>捂<EFBFBD>典<EFBFBD>憭梯揖嚗<E68F96><E59A97>憒?H.4 閬<><E996AC>80%<25>𣂼<EFBFBD><F0A382BC><EFBFBD><EFBFBD>嚗<EFBFBD><E59A97>銝粹<E98A9D>韐蠘蝸銝衤<E98A9D><E8A1A4>航<EFBFBD><E888AA>箇緵蝵𤑳<E89DB5>瘜W𢆡<EFBCB7>?
-
**TLS 瘚贝<E7989A><E8B49D>牐<EFBFBD>蝚?*嚗鍃 蝏?TLS 瘚贝<E7989A><E8B49D><EFBFBD>閬<EFBFBD><E996AC>摰䂿<E691B0>
SecTrustRef<20>㚚<EFBFBD>蝥?mock 獢<>沲嚗<E6B2B2><E59A97><EFBFBD>滢<EFBFBD>銝箏<E98A9D>雿滨泵<E6BBA8>? -
<EFBFBD>唳<EFBFBD>隞嗆溶<EFBFBD>惩<EFBFBD> Xcode嚗𡁜<EFBFBD>撱箇<EFBFBD>瘚贝<EFBFBD><EFBFBD><EFBFBD>辣<EFBFBD><EFBFBD>閬<EFBFBD><EFBFBD><EFBFBD>冽溶<EFBFBD>惩<EFBFBD>
TrustHttpDNSTeststarget<65>? -
瘚贝<EFBFBD><EFBFBD>唳旿嚗帋蝙<EFBFBD>?
HttpdnsNWHTTPClientTestHelper<20><><EFBFBD>瘚贝<E7989A><E8B49D>唳旿嚗𣬚&靽脲<E99DBD>霂閧<E99C82><E996A7>舫<EFBFBD>憭齿<E686AD>扼<EFBFBD>?
<EFBFBD><EFBFBD>辣靘肽<EFBFBD>
瘚贝<EFBFBD><EFBFBD><EFBFBD>辣靘肽<EFBFBD>隞乩<EFBFBD>皞鞉<EFBFBD>隞塚<EFBFBD>
HttpdnsNWHTTPClient.h/m- 銝餉<E98A9D>鋡急<E98BA1>霂閧掩HttpdnsNWHTTPClient_Internal.h- <20><><EFBFBD><EFBFBD>寞<EFBFBD><E5AF9E>湧蠧嚗<E8A0A7><E59A97>霂蓥<E99C82><E893A5>剁<EFBFBD>HttpdnsNWReusableConnection.h/m- 餈墧𦻖蝞∠<E89D9E>HttpdnsNWHTTPClientResponse- <20>滚<EFBFBD>璅∪<E79285>
韐∠讃<EFBFBD><EFBFBD><EFBFBD>
瘛餃<EFBFBD><EFBFBD>唳<EFBFBD>霂閙𧒄嚗諹窈<EFBFBD>萄儐嚗?
- <EFBFBD>賢<EFBFBD>閫<EFBFBD><EFBFBD>嚗䫤test`
- 雿輻鍂
#pragma mark蝏<><E89D8F>瘚贝<E7989A><E8B49D><EFBFBD><EFBFBD> - 瘛餃<EFBFBD>皜<EFBFBD>苊<EFBFBD><EFBFBD>釣<EFBFBD>𡃏秩<EFBFBD>擧<EFBFBD>霂閧𤌍<EFBFBD>?
- 撉諹<EFBFBD>瘚贝<EFBFBD>閬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>僎<EFBFBD>湔鰵<EFBFBD>祆<EFBFBD>獢?
**<2A><><EFBFBD>擧凒<E693A7>?: 2025-11-01 瘚贝<EFBFBD>獢<EFBFBD>沲: XCTest + OCMock **蝏湔擪<E6B994>?: Claude Code
<EFBFBD>湔鰵<EFBFBD>亙<EFBFBD>:
- 2025-11-01: <20>啣<EFBFBD> 15 銝芸<E98A9D>蝡臬藁餈墧𦻖憭滨鍂瘚贝<E7989A>嚗𠃋<E59A97><F0A0838B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝏<EFBFBD><E89D8F>嚗峕<E59A97>霂閙<E99C82>餅㺭憓噼秐 37 銝?
- 2025-11-01: Mock server <20>啣<EFBFBD> 3 銝?HTTPS 蝡臬藁嚗?1444-11446嚗厩鍂鈭擧<E988AD>霂閗<E99C82><E99697>交<EFBFBD><E4BAA4>𠉛氖
- 2025-11-01: <20>啣<EFBFBD><E595A3>砍𧑐 mock server嚗峕𤜯隞?httpbin.org嚗峕<E59A97>靘𤤿迅摰𡁏<E691B0>霂閧㴓憓?
- 2025-11-01: <20>啣<EFBFBD> 15 銝芸僎<E88AB8>㻫<EFBFBD><E3BBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>餈墧𦻖憭滨鍂<E6BBA8><E98D82><EFBFBD>瘚贝<E7989A>嚗𠃍<E59A97><F0A0838D><EFBFBD><EFBFBD>蝏<EFBFBD><E89D8F>