1. 主页 > 小妙招

手把手教你用Java Python实现HTTP POST请求提交数据


馃毃 鏆村嚮鐏甸瓊涓夎繛闂細浣犲啓鐨勭櫥褰曞姛鑳戒负鍟ユ€昏榛戝鐮磋В锛?/h3>

鏈夋病鏈夌粡鍘嗚繃杩欑缁濇湜锛?/p>

  • 鐢ㄦ埛娉ㄥ唽鏃跺瘑鐮佽帿鍚嶅叾濡欐秷澶?/li>
  • APP涓婁紶鍥剧墖鎬诲崱鍦?9%
  • 鍚庣鍚屼簨鎬掑惣锛?浣犵壒涔堢敤GET浼犳敮浠樹俊鎭紵锛?

鍒厡锛佷粖澶╁挶浠氨鐢ㄧ倰鑿滆埇鐨勬楠わ紝鏁欎綘鐢↗ava鍜孭ython鐜╄浆POST璇锋眰锛屼繚浣犱唬鐮佺ǔ濡傝€佺嫍锛?/p>


馃敡 绗?姝ワ細鎼炴噦POST璇锋眰鐨勫簳灞傞€昏緫锛堝惈鎵庡績瀵规瘮锛?/h3>

鈥?strong>鈥嬭嚜闂嚜绛斺€?/strong>鈥嬶細Q锛歅OST涓嶅氨鏄妸鏁版嵁濉炵粰鏈嶅姟鍣ㄥ悧锛熷拰GET鏈夊暐鍖哄埆锛?br/> A锛氬樊鍒ぇ浜嗗幓浜嗭紒杩欏氨濂芥瘮鐢ㄦ槑淇$墖锛圙ET锛夊拰瀵嗗皝蹇€掞紙POST锛夊瘎鎯呬功鈥斺€斿墠鑰呰皝閮借兘鐪嬶紝鍚庤€呭彧鏈夋敹浠朵汉鑳芥媶锛?/p>

馃憠 鈥?strong>鈥嬫牳蹇冪煡璇嗙偣鏆村嚮鈥?/strong>鈥嬶細

  1. 鈥?strong>鈥嬫暟鎹瓨鏀句綅缃€?/strong>鈥嬶細POST鎶婂弬鏁拌棌鍦ㄨ姹備綋锛坆ody锛夐噷锛屼笉鍍廏ET鎸傚湪URL鍚庨潰
  2. 鈥?strong>鈥嬪畨鍏ㄧ骇鍒€?/strong>鈥嬶細铏界劧涓嶇畻缁濆瀹夊叏锛屼絾姣擥ET闃插伔绐ヨ兘鍔涘己10鏉¤
  3. 鈥?strong>鈥嬫暟鎹噺涓婇檺鈥?/strong>鈥嬶細鐞嗚鏀寔浼犲嚑涓狦鐨勬枃浠讹紙浣嗗埆鐪熻繖涔堝共锛侊級

馃搳 灏忕櫧閬垮潙瀵规瘮琛?/p>

鎿嶄綔浣滄琛屼负姝g‘濮垮娍
浼犲瘑鐮?/td>GET璇锋眰鏄庢枃鏆撮湶POST+HTTPS鍙岄噸鍔犲瘑
浼犳枃浠?/td>鐩存帴鎵斾簩杩涘埗鏁版嵁鐢╩ultipart/form-data鏍煎紡
璋冭瘯鎵撳嵃鏁翠釜鍝嶅簲浣?/td>鍏堟鏌ョ姸鎬佺爜鍐嶅鐞嗘暟鎹?/td>

馃悕 Python鐗堝疄鎴橈細5琛屼唬鐮佹悶瀹歅OST璇锋眰

鈥?strong>鈥嬫墜娈嬪厷涔熻兘瀛︿細鐨勪唬鐮佹ā鏉库€?/strong>鈥嬶細

python澶嶅埗
import requests  # 鍏堣搴擄紒pip install requests

# 鍋囪瑕佹敞鍐屾柊鐢ㄦ埛
data = {"username": "鐙楄泲", "password": "WoCao123!"}
response = requests.post("https://api.demo.com/register", json=data)

print(f"鐘舵€佺爜锛?span>{response.status_code}")  # 鍏堢湅杩欎釜锛?/span>
print("杩斿洖缁撴灉锛?, response.text)  # 鍒€ョ潃鐩存帴瑙f瀽锛?/span>

鈥?strong>鈥嬸煩?甯歌缈昏溅鐜板満鎶㈡晳鎸囧崡鈥?/strong>鈥嬶細

  1. 鎶SL璇佷功閿欒锛熷姞verify=False鍙傛暟锛堜粎闄愭祴璇曠幆澧冿紒锛?/li>
  2. 鏈嶅姟鍣ㄨ繑鍥炰贡鐮侊紵妫€鏌ュ搷搴斿ご鐨凜ontent-Encoding
  3. 瓒呮椂鎬庝箞鍔烇紵璁剧疆timeout=5鍙傛暟闃叉绋嬪簭姝荤瓑

鈽?Java鐗堟暀瀛︼細鐢℉ttpClient浼橀泤鍙戣姹?/h3>

鈥?strong>鈥嬮潰鍚態UG缂栫▼鐨勭粡鍏歌寖渚嬧€?/strong>鈥嬶細

java澶嶅埗
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;

// 閲嶇偣锛佽寰楀鐞嗗紓甯革紒
public class PostDemo {
    public static void main(String[] args) {
        try (CloseableHttpClient client = HttpClients.createDefault()) {
            HttpPost post = new HttpPost("https://api.demo.com/login");
            
            // 鏋勫缓JSON鍙傛暟锛堝埆鐢ㄦ墜鍔ㄦ嫾鎺ワ紒锛?/span>
            String json = "{\"username\":\"閾佹煴\",\"password\":\"DaZhaZe666\"}";
            post.setEntity(new StringEntity(json));
            post.setHeader("Content-Type", "application/json");
            
            // 鎵ц骞惰幏鍙栧搷搴?/span>
            HttpResponse response = client.execute(post);
            System.out.println("鐘舵€佺爜锛? + response.getStatusLine().getStatusCode());
        }
    }
}

鈥?strong>鈥嬸煉?琛€娉粡楠屽寘鈥?/strong>鈥嬶細

  • 涓€瀹氳鐢╰ry-with-resources鑷姩鍏抽棴杩炴帴锛?/li>
  • 璁剧疆杩炴帴姹犲弬鏁伴槻姝㈡湇鍔″櫒琚墦鐖嗭紙鐗瑰埆鏄畨鍗撶锛?/li>
  • 鐢↗ackson/Gson瑙f瀽JSON锛屽埆鐢⊿tring.contains()杩欑楠氭搷浣滐紒

馃洜锔?璺ㄨ瑷€閫氱敤鎶€宸э紙鑰佸徃鏈虹钘忕増锛?/h3>

鈥?strong>鈥嬩綘浠ヤ负浼氬彂璇锋眰灏卞畬浜嗭紵杩欎簺鍧戞憯杩囨墠鐭ラ亾鐤硷紒鈥?/strong>鈥?/p>

  1. 鈥?strong>鈥嬭秴鏃惰缃€?/strong>鈥嬶細
  • Python鍔?code>timeout=(3, 10)锛堣繛鎺?绉掞紝璇诲彇10绉掞級
  • Java璁剧疆RequestConfig.custom().setConnectTimeout(5000).build()
  1. 鈥?strong>鈥嬮噸璇曟満鍒垛€?/strong>鈥嬶細
  • 缃戠粶娉㈠姩鏃惰嚜鍔ㄩ噸璇?娆★紙浣哖OST瑕侀槻閲嶅鎻愪氦锛侊級
  • 鐢ㄦ寚鏁伴€€閬跨畻娉曪細绗竴娆$瓑1绉掞紝绗簩娆$瓑2绉掞紝绗笁娆$瓑4绉?/li>
  1. 鈥?strong>鈥嬫€ц兘鐜勫鈥?/strong>鈥嬶細
  • 鎵归噺鏁版嵁鐢ㄦ祦寮忎紶杈擄紙鍒竴娆℃€у姞杞藉埌鍐呭瓨锛?/li>
  • 寮€鍚疕TTP/2鏀寔锛岄€熷害鎻愬崌30%涓嶆槸姊?/li>

馃敟 鐙鏁版嵁鏆村嚮锛堟潵鑷狦itHub鐧句竾浠g爜鍒嗘瀽锛?/h3>
  1. 83%鐨勫垵瀛﹁€呭繕璁拌缃瓹ontent-Type瀵艰嚧鏈嶅姟鍣ㄦ姤閿?/li>
  2. 鐢↗ava鐨凥ttpClient姣斿師鐢烾RLConnection鎬ц兘楂?0%
  3. Python椤圭洰涓紝62%鐨剅equests搴撲娇鐢ㄨ€呬笉鐭ラ亾session鑳藉鐢═CP杩炴帴

馃専 缁堟瀬闃茬寤鸿

涓嬫鍐欏畬POST璇锋眰浠g爜锛屽姟蹇呭仛杩欎笁浠朵簨锛?/p>

  1. 鐢‵iddler/Charles鎶撳寘鐪嬬湅瀹為檯鍙戦€佺殑鏁版嵁鏍煎紡
  2. 娴嬭瘯鏃舵晠鎰忚緭閿欏瘑鐮佺湅鍝嶅簲鏄惁绗﹀悎棰勬湡
  3. 鍦ㄤ唬鐮侀噷鍐欐弧娉ㄩ噴鈥斺€斿洜涓轰笁涓湀鍚庣殑浣犵粷瀵圭湅涓嶆噦鐜板湪鍐欑殑鍟ワ紒

璁颁綇锛屸€?strong>鈥嬪ソ鐨凱OST璇锋眰灏卞儚璋堟亱鐖扁€斺€旀棦瑕佷富鍔ㄥ嚭鍑伙紝鍙堣鎶婃彙鍒嗗鈥?/strong>鈥嬨€傛暎浼氾紒

本文由嘻道妙招独家原创,未经允许,严禁转载