原文:
https://www.cnblogs.com/bookyao/p/11602212.html
https://www.cnblogs.com/bookyao/p/12134438.html
C#代碼
string postString = "Id=0&Name=11144411&Mark=%E5%A4%87%E6%B3%A81&SignStepId=112&SignFlowId=28&ShouldUserIds=421&OAOfficeSupplyApplyGoodsApiDtos%5B0%5D%5BSupplyId%5D=1&OAOfficeSupplyApplyGoodsApiDtos%5B0%5D%5BSupplyName%5D=%E7%AC%94&OAOfficeSupplyApplyGoodsApiDtos%5B0%5D%5BPrice%5D=1&OAOfficeSupplyApplyGoodsApiDtos%5B0%5D%5BNum%5D=2&OAOfficeSupplyApplyGoodsApiDtos%5B0%5D%5BMark%5D=%E5%A4%87%E6%B3%A82";//這里即為傳遞的參數,可以用工具抓包分析,也可以自己分析,主要是form里面每一個name都要加進來
byte[] postData = Encoding.UTF8.GetBytes(postString);//編碼,尤其是漢字,事先要看下抓取網頁的編碼方式
string url = "http://localhost:34611/apis/OAIndividual/SaveOAOfficeSupplyApply";//地址
WebClient webClient = new WebClient();
webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");//采取POST方式必須加的header,如果改為GET方式的話就去掉這句話即可
webClient.Headers.Add("Cookie", "Abp.TenantId=1; ASP.NET_SessionId=1a4qtdozyb2luqr25rbxmqkt; .AspNetCore.Antiforgery.AcSpg7uy7mk=CfDJ8Bu93kbkXodIukCRkyhe5TYhr3WCXnGWBtjLJgCpb7it26iOsRa9B3VpKEkXLjOyZvbAdzBejm48ytubLuJXqEOy_qX1dJnJSSStH2ETV7av2vgj60lR9LjnfjqrnmvXQEk13gfnKGhx0eJc386tUy0; .AspNetCore.Identity.Application=CfDJ8Bu93kbkXodIukCRkyhe5TZ6rCnVq6q8Hj8iHvZL2onb3xXMBJ7c3PAvWvNnymmA-Y2_uuHqWv4eKV72-_XrtNqNaSINiJ7pQzxYZ4BKlMgZCv3_8KsQGxeYq2OpFViOYGOA2k5dgFN9zL1_LIbfqRqat5uIlHyP4BtyQamnU0QPt45SbiD9G0OHt2jWqL4QMglEsqkjdYCwRVs6KK6PJHFs1SiA7hzdZiEpfFlKdxO8ApnrM_Rae_eoiSUHANKeqVAokn6BDlNxUv-PtFHpuxfr_GOVIIlw9yXlZqdG6Kb1VQ5wIOpGQOZpq2jNNUDbTdgVWRcFNkWIhNSrdvzGDdUoVAKZBK_qo2xc2uUzXw432t-KrRFJSlx0bpcMEoE2y9yar1Rf1Zc6yzeDObqtuYaS4BwvwyAS0tpc69bzpd2F1hxrzKZMBK2bEVd9CH-SCCoha6ERveN6ceGYKcdQ8dA6j9Wjhzmv9z4L87J8RPLZjZPZF6UYv5PSa7d1kqh-X7e6ccbqIyTEdFFAO2d7UjE-XvBvZ2mAuB3Se1fyBOSFe1KH4yJn6__WkWd90iaCofHhqgg1j1Jm8jQ0047Qlo3V2i8yVloJSsqrdX6Y0fQTH-yLNoJ3qSGkIhnRpWR6H53BLZtnPDH-vEjnssvr0bSV4TtFXMJ7gt7kNojmpzD0hTz-r-ZLxfCnPNO6-1RujLOFMf_G1sUmbV_8JXtpcSwoR388Zn48eL87gEah1T5oUXInM7_qk3HSmlQtcZ-s-YrF31K8Lp_p-dHtQ-cPrme_KelrNt2puzw1ye5a7aZdbbneqsu9k3Tmb8EBlclEWLk96RfD04VsuMwDKgMLm6a9vcxVukxeNuX7gj9YkwsF8GMBeRXyFQ-9c_FBQXHIGunV0soihxWR5b89eoxjE34FY_2dfIfWJeU9KPf1iHrqU1aj1_FfGZHAHHYel-Yp4RFmIQtp1pyzGIbXZEkaaebvwteC6HCHGqSXX1SekyLdklj6rdZvFgedIm5_XIktbnwb9Oaej0LkfRONZmrffqMDOEePxWe__EQJ4VaMn2GPX3ikKGA-7rzlyg9nzLMuuTq4pmB_JfiPo22pPrR2vrrbkapB0jRd53_XKURh6vgwO6CVRBbp28vHCSKje-G-8S3AR3PHOyoHd-pwrI6rC6kW6SnASr7ExqS2AOXBxfR5-OTCY-erT68bA7WJw-TZa4AHk_h0SXo2wk76P9lKxWaeLLuKp_6s6lLcihNhXIVSMb-S7DgUhyAnhix-VPlqgfR2JDmHmFhgJMFCjiMiIVFj_N7PbP9SM_zWxPiGxC5F3Mym4xguJFPT-EN5kLq1pwId3bNnX6p6ksvIc03oqj0GOyPWHGcvF7Qnv4QeQbq4SeA7D1SbpbcHTi7mmtITYrnWL7kE7JLBJQK6PTNywK0; XSRF-TOKEN=CfDJ8Bu93kbkXodIukCRkyhe5TaxVpt_KnURVc7CSJSdAiLG_NfnshSc7eduhCbW6fbSUIbeTzCOSgASSHY2FnxWZ5Q2ZFvX4Dpe2o-8AAXIIv1UvZWNuo5nZioTbMfMGc-ZPRgeZtoZs6IUhuMQdbkN1fnpantZsCfSjTT9I6Ltw8LcrHUDm1EsmfjySWC5MQbkdQ");
webClient.Headers.Add("X-XSRF-TOKEN", "CfDJ8Bu93kbkXodIukCRkyhe5TaxVpt_KnURVc7CSJSdAiLG_NfnshSc7eduhCbW6fbSUIbeTzCOSgASSHY2FnxWZ5Q2ZFvX4Dpe2o-8AAXIIv1UvZWNuo5nZioTbMfMGc-ZPRgeZtoZs6IUhuMQdbkN1fnpantZsCfSjTT9I6Ltw8LcrHUDm1EsmfjySWC5MQbkdQ");
byte[] responseData = webClient.UploadData(url, "POST", postData);//得到返回字符流
string srcString = Encoding.UTF8.GetString(responseData);//解碼
Console.WriteLine(srcString);
Java代碼
public static void test1() {
String postString = "Id=0&Name=222&Mark=%E5%A4%87%E6%B3%A81&SignStepId=112&SignFlowId=28&ShouldUserIds=421&OAOfficeSupplyApplyGoodsApiDtos%5B0%5D%5BSupplyId%5D=1&OAOfficeSupplyApplyGoodsApiDtos%5B0%5D%5BSupplyName%5D=%E7%AC%94&OAOfficeSupplyApplyGoodsApiDtos%5B0%5D%5BPrice%5D=1&OAOfficeSupplyApplyGoodsApiDtos%5B0%5D%5BNum%5D=2&OAOfficeSupplyApplyGoodsApiDtos%5B0%5D%5BMark%5D=%E5%A4%87%E6%B3%A82";//這里即為傳遞的參數,可以用工具抓包分析,也可以自己分析,主要是form里面每一個name都要加進來
interfaceUtil("http://localhost:34611/apis/OAIndividual/SaveOAOfficeSupplyApply", postString);
}
public static void interfaceUtil(String path, String data) {
try {
// 原文:https://www.cnblogs.com/angusbao/p/7727649.html
URL url = new URL(path);
//打開和url之間的連接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
PrintWriter out = null;
//請求方式
conn.setRequestMethod("POST");
//設置header
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Cookie", "Abp.TenantId=1; ASP.NET_SessionId=1a4qtdozyb2luqr25rbxmqkt; .AspNetCore.Antiforgery.AcSpg7uy7mk=CfDJ8Bu93kbkXodIukCRkyhe5TYhr3WCXnGWBtjLJgCpb7it26iOsRa9B3VpKEkXLjOyZvbAdzBejm48ytubLuJXqEOy_qX1dJnJSSStH2ETV7av2vgj60lR9LjnfjqrnmvXQEk13gfnKGhx0eJc386tUy0; .AspNetCore.Identity.Application=CfDJ8Bu93kbkXodIukCRkyhe5TZ6rCnVq6q8Hj8iHvZL2onb3xXMBJ7c3PAvWvNnymmA-Y2_uuHqWv4eKV72-_XrtNqNaSINiJ7pQzxYZ4BKlMgZCv3_8KsQGxeYq2OpFViOYGOA2k5dgFN9zL1_LIbfqRqat5uIlHyP4BtyQamnU0QPt45SbiD9G0OHt2jWqL4QMglEsqkjdYCwRVs6KK6PJHFs1SiA7hzdZiEpfFlKdxO8ApnrM_Rae_eoiSUHANKeqVAokn6BDlNxUv-PtFHpuxfr_GOVIIlw9yXlZqdG6Kb1VQ5wIOpGQOZpq2jNNUDbTdgVWRcFNkWIhNSrdvzGDdUoVAKZBK_qo2xc2uUzXw432t-KrRFJSlx0bpcMEoE2y9yar1Rf1Zc6yzeDObqtuYaS4BwvwyAS0tpc69bzpd2F1hxrzKZMBK2bEVd9CH-SCCoha6ERveN6ceGYKcdQ8dA6j9Wjhzmv9z4L87J8RPLZjZPZF6UYv5PSa7d1kqh-X7e6ccbqIyTEdFFAO2d7UjE-XvBvZ2mAuB3Se1fyBOSFe1KH4yJn6__WkWd90iaCofHhqgg1j1Jm8jQ0047Qlo3V2i8yVloJSsqrdX6Y0fQTH-yLNoJ3qSGkIhnRpWR6H53BLZtnPDH-vEjnssvr0bSV4TtFXMJ7gt7kNojmpzD0hTz-r-ZLxfCnPNO6-1RujLOFMf_G1sUmbV_8JXtpcSwoR388Zn48eL87gEah1T5oUXInM7_qk3HSmlQtcZ-s-YrF31K8Lp_p-dHtQ-cPrme_KelrNt2puzw1ye5a7aZdbbneqsu9k3Tmb8EBlclEWLk96RfD04VsuMwDKgMLm6a9vcxVukxeNuX7gj9YkwsF8GMBeRXyFQ-9c_FBQXHIGunV0soihxWR5b89eoxjE34FY_2dfIfWJeU9KPf1iHrqU1aj1_FfGZHAHHYel-Yp4RFmIQtp1pyzGIbXZEkaaebvwteC6HCHGqSXX1SekyLdklj6rdZvFgedIm5_XIktbnwb9Oaej0LkfRONZmrffqMDOEePxWe__EQJ4VaMn2GPX3ikKGA-7rzlyg9nzLMuuTq4pmB_JfiPo22pPrR2vrrbkapB0jRd53_XKURh6vgwO6CVRBbp28vHCSKje-G-8S3AR3PHOyoHd-pwrI6rC6kW6SnASr7ExqS2AOXBxfR5-OTCY-erT68bA7WJw-TZa4AHk_h0SXo2wk76P9lKxWaeLLuKp_6s6lLcihNhXIVSMb-S7DgUhyAnhix-VPlqgfR2JDmHmFhgJMFCjiMiIVFj_N7PbP9SM_zWxPiGxC5F3Mym4xguJFPT-EN5kLq1pwId3bNnX6p6ksvIc03oqj0GOyPWHGcvF7Qnv4QeQbq4SeA7D1SbpbcHTi7mmtITYrnWL7kE7JLBJQK6PTNywK0; XSRF-TOKEN=CfDJ8Bu93kbkXodIukCRkyhe5TaxVpt_KnURVc7CSJSdAiLG_NfnshSc7eduhCbW6fbSUIbeTzCOSgASSHY2FnxWZ5Q2ZFvX4Dpe2o-8AAXIIv1UvZWNuo5nZioTbMfMGc-ZPRgeZtoZs6IUhuMQdbkN1fnpantZsCfSjTT9I6Ltw8LcrHUDm1EsmfjySWC5MQbkdQ");
conn.setRequestProperty("X-XSRF-TOKEN", "CfDJ8Bu93kbkXodIukCRkyhe5TaxVpt_KnURVc7CSJSdAiLG_NfnshSc7eduhCbW6fbSUIbeTzCOSgASSHY2FnxWZ5Q2ZFvX4Dpe2o-8AAXIIv1UvZWNuo5nZioTbMfMGc-ZPRgeZtoZs6IUhuMQdbkN1fnpantZsCfSjTT9I6Ltw8LcrHUDm1EsmfjySWC5MQbkdQ");
//設置是否向httpUrlConnection輸出,設置是否從httpUrlConnection讀入,此外發送post請求必須設置這兩個
//最常用的Http請求無非是get和post,get請求可以獲取靜態頁面,也可以把參數放在URL字串后面,傳遞給servlet,
//post與get的 不同之處在於post的參數不是放在URL字串里面,而是放在http請求的正文內。
conn.setDoOutput(true);
conn.setDoInput(true);
//獲取URLConnection對象對應的輸出流
out = new PrintWriter(conn.getOutputStream());
//發送請求參數即數據
out.print(data);
//緩沖數據
out.flush();
//獲取URLConnection對象對應的輸入流
InputStream is = conn.getInputStream();
//構造一個字符流緩存
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String str = "";
while ((str = br.readLine()) != null) {
System.out.println(str);
}
//關閉流
is.close();
//斷開連接,最好寫上,disconnect是在底層tcp socket鏈接空閑時才切斷。如果正在被其他線程使用就不切斷。
//固定多線程的話,如果不disconnect,鏈接會增多,直到收發不出信息。寫上disconnect后正常一些。
conn.disconnect();
System.out.println("完整結束");
} catch (Exception e) {
e.printStackTrace();
}
}