zoukankan      html  css  js  c++  java
  • 接口 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

  • 相关阅读:
    VS2010开发工具使用技巧<之简单讲解>
    JS中的数学计算<之简单实例讲解>
    让DIV中文字换行显示
    VS2010编写WebService与在IIS的发布<之简单讲解>
    JSON.parse 与 eval() 对于解析json的问题
    [字符串]与[数组]的互相转换
    A标签实现文件下载功能
    "Chinese_PRC_CI_AS" 和 "Chinese_PRC_90_CI_AI" 之间的排序规则冲突问题
    IE开发人员工具之实用功能讲解
    CSS选择器 < ~ +
  • 原文地址:https://www.cnblogs.com/guxingy/p/13920137.html
Copyright © 2011-2022 走看看