1.json和XML简介
json是一种轻量级的传输数据格式,用于数据交互。json请求类型的请求头中的Content-Type对应为application/json.
XML是一种可扩展标记语言,是用来传输和存储数据。XML请求类型的请求头中的Content-Type对应为application/xml或者text/xml,这两者格式是一样,唯一的区别是编码格式。
2.json实战演示
实战演示代码如下(Python版和Java版)。
(1)Python演示代码
我们在Python编程中,使用json关键字参数发送json请求并传递请求体信息。
>>> import requests
>>> r = requests.post(
'https://httbpin.ceshiren.com/post',
json = {'key':'value'})
>>> r.request.headers
{'User-Agent':'python-requests/2.22.0',
'Accept-Encoding':' gzip,deflate'\
'Accept':'*/*','Connection':'keep-alive',
'Content-Length':'16',\
'Content-Type':'application/json'}
如果请求的参数选择是json,那么Content-Type自动变为application/json。
(2)Java演示代码
Java中使用contentType()方法添加请求头信息,使用body()方法添加请求体信息。
import static org.hamcrest.core.IsEqual.equalTo;
import static io.restassured.RestAssured.*;
public class Requests{
public static void main(String[] ages){
String jsonData = "{"key":"value"}";
//定义请求头信息的contentType为application/json
given().contentType("application/json").
body(jsonData).
when().
post("https://httpbin.ceshiren.com/post").
then().body("json.key",equalTo("value")).log().all();
}
}
3.XML实战演练
实战演示代码如下(Python版和Java版)。
(1)Python演示代码
我们在Python编程中,使用data关键字参数发送XML请求并传递请求体信息。
import request
class TestRequests:
def test_xml(self):
xml = """
<?xml version='1.0' encoding='utf-8'?>
<a>hogwarts</a>
"""
#配置请求头
headers = {
'Content-Type':'application/xml'0
}
#对httpbin发起请求
r = requests.post('https://httpbin.ceshiren.com/
post',data=xml,headers=headers=headers).text
print(r)
上面示例的执行结果为Content-Type自动化变为application/xml。
(2)Java演示代码
Java中使用contentType()方法添加请求头信息,使用body()方法添加请求体信息。
创建add.xml文件。
<Envelope xmlns="http://scheams.xmlsoap.org/soap/envelop/">
<Body>
<Add xmlns="http://tempuri.org/">
<intA>2</intA>
<intB>2</intB>
</Add>
</Body>
</Envelope>
/*
* @Author: 霍格沃兹测试开发学社
* @Desc: '更多测试开发技术探讨,请访问:https://ceshiren.com/t/topic/15860'
*/
package ch04;
import static io.restassured.RestAssured.*;
import org.junit.jupiter.api.Test;
import org.apache.commons.io.IOUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class TestXML{
@Test
void testXML() throws IOException{
// 定义请求体数据: 源自文件对象
File file = new File("src/test/resources/add.xml");
FileInputStream fis = new FileInputStream file);
String reqBody = IOUtils.toString(fis,"UTF-8");
//定义请求基地址
baseURI = "http://dneonl***.com/";
given()
//定制请求内容媒体类型
.contentType("text/xml")
//定制请求体数据
.body(reqBody)
//打印请求头信息
.log().headers()
//打印请求体信息
.log().body()
.when()
//发送请求
.post("/calculator.asmx")
.then()
//响应状态码断言
.statusCode(200);
}
}
上面示例执行结果为contentType自动变为text/xml。
搜索微信公众号:TestingStudio霍格沃兹的干货都很硬核