接口 C#/Java 請求數據 form-data 的方式傳輸復雜對象


原文:
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();
		}
	}

游覽器

Post Man


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM