fix: json的请求体mockjs报错问题
This commit is contained in:
parent
6bdb0e7386
commit
2e61cd1e88
|
@ -278,6 +278,9 @@ public class MsHTTPSamplerProxy extends MsTestElement {
|
||||||
if (StringUtils.isNotEmpty(this.getPort()) && this.getPort().startsWith("${")) {
|
if (StringUtils.isNotEmpty(this.getPort()) && this.getPort().startsWith("${")) {
|
||||||
url.replaceAll(this.getPort(), "10990");
|
url.replaceAll(this.getPort(), "10990");
|
||||||
}
|
}
|
||||||
|
if (url == null) {
|
||||||
|
MSException.throwException("请填写请求地址");
|
||||||
|
}
|
||||||
URL urlObject = new URL(url);
|
URL urlObject = new URL(url);
|
||||||
sampler.setDomain(URLDecoder.decode(urlObject.getHost(), "UTF-8"));
|
sampler.setDomain(URLDecoder.decode(urlObject.getHost(), "UTF-8"));
|
||||||
if (urlObject.getPort() > 0 && urlObject.getPort() == 10990 && StringUtils.isNotEmpty(this.getPort()) && this.getPort().startsWith("${")) {
|
if (urlObject.getPort() > 0 && urlObject.getPort() == 10990 && StringUtils.isNotEmpty(this.getPort()) && this.getPort().startsWith("${")) {
|
||||||
|
@ -298,7 +301,7 @@ public class MsHTTPSamplerProxy extends MsTestElement {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LogUtil.error(e);
|
LogUtil.error(e.getMessage(), e);
|
||||||
MSException.throwException(e.getMessage());
|
MSException.throwException(e.getMessage());
|
||||||
}
|
}
|
||||||
// 请求体
|
// 请求体
|
||||||
|
|
|
@ -1,11 +1,9 @@
|
||||||
package io.metersphere.api.dto.scenario;
|
package io.metersphere.api.dto.scenario;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.google.gson.Gson;
|
|
||||||
import com.google.gson.GsonBuilder;
|
|
||||||
import io.metersphere.api.dto.scenario.request.BodyFile;
|
import io.metersphere.api.dto.scenario.request.BodyFile;
|
||||||
import io.metersphere.commons.json.JSONSchemaGenerator;
|
|
||||||
import io.metersphere.commons.utils.FileUtils;
|
import io.metersphere.commons.utils.FileUtils;
|
||||||
|
import io.metersphere.commons.utils.LogUtil;
|
||||||
import io.metersphere.commons.utils.ScriptEngineUtils;
|
import io.metersphere.commons.utils.ScriptEngineUtils;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
|
@ -70,17 +68,7 @@ public class Body {
|
||||||
sampler.setDoMultipart(true);
|
sampler.setDoMultipart(true);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (StringUtils.isNotEmpty(this.format) && this.getJsonSchema() != null) {
|
parseJonBodyMock();
|
||||||
if("JSON-SCHEMA".equals(this.format)) {
|
|
||||||
this.raw = JSONSchemaGenerator.getJson(com.alibaba.fastjson.JSON.toJSONString(this.getJsonSchema()));
|
|
||||||
} else { // json 文本也支持 mock 参数
|
|
||||||
JSONObject jsonObject = com.alibaba.fastjson.JSON.parseObject(this.getRaw());
|
|
||||||
jsonMockParse(jsonObject);
|
|
||||||
// 格式化 json
|
|
||||||
Gson gson = new GsonBuilder().serializeNulls().setPrettyPrinting().create();
|
|
||||||
this.raw = gson.toJson(jsonObject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
KeyValue keyValue = new KeyValue("", "JSON-SCHEMA", this.getRaw(), true, true);
|
KeyValue keyValue = new KeyValue("", "JSON-SCHEMA", this.getRaw(), true, true);
|
||||||
sampler.setPostBodyRaw(true);
|
sampler.setPostBodyRaw(true);
|
||||||
keyValue.setEnable(true);
|
keyValue.setEnable(true);
|
||||||
|
@ -90,13 +78,34 @@ public class Body {
|
||||||
return body;
|
return body;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void parseJonBodyMock() {
|
||||||
|
try {
|
||||||
|
// if (StringUtils.isNotBlank(this.format) && "JSON-SCHEMA".equals(this.format) ) {
|
||||||
|
// if(this.getJsonSchema() != null) {
|
||||||
|
// JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(this.getJsonSchema()));
|
||||||
|
// jsonMockParse(jsonObject);
|
||||||
|
// this.setJsonSchema(jsonObject);
|
||||||
|
// }
|
||||||
|
// } else
|
||||||
|
if (StringUtils.isNotBlank(this.type) && StringUtils.equals(this.type, "JSON")) { // json 文本也支持 mock 参数
|
||||||
|
JSONObject jsonObject = com.alibaba.fastjson.JSON.parseObject(this.getRaw());
|
||||||
|
jsonMockParse(jsonObject);
|
||||||
|
this.raw = JSONObject.toJSONString(jsonObject);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
LogUtil.error(e.getMessage(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void jsonMockParse(JSONObject jsonObject) {
|
private void jsonMockParse(JSONObject jsonObject) {
|
||||||
for(String key : jsonObject.keySet()) {
|
for(String key : jsonObject.keySet()) {
|
||||||
Object value = jsonObject.get(key);
|
Object value = jsonObject.get(key);
|
||||||
if(value instanceof JSONObject) {
|
if(value instanceof JSONObject) {
|
||||||
jsonMockParse((JSONObject) value);
|
jsonMockParse((JSONObject) value);
|
||||||
} else if(value instanceof String) {
|
} else if(value instanceof String) {
|
||||||
value = ScriptEngineUtils.calculate((String) value);
|
if (StringUtils.isNotBlank((String) value)) {
|
||||||
|
value = ScriptEngineUtils.calculate((String) value);
|
||||||
|
}
|
||||||
jsonObject.put(key, value);
|
jsonObject.put(key, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue