0

我正在尝试在 JMeter BeanShell PostProcessor 中连接字符串,但不知何故它不起作用,似乎 java 处理多行字符串的方式在这里不起作用:

String poXML="<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"><S:Header/><S:Body><ns7:NewPORequest " +    "xmlns:ns2=\"http://services.portal.com/pro/common\" xmlns:ns5=\"http://services.portal.com/pro/po\" + "xmlns:ns7=\"http://services.portal.com/proc/ws\">" +
"<ns7:tracingLevel>OFF</ns7:tracingLevel><ns7:userId>TestUtil</ns7:userId><ns7:applicationId>RF</ns7:applicationId>" +
"<ns7:userType>Buyer</ns7:userType><ns5:PurchaseOrder><ns5:poExternalId>XXX-930220</ns5:poExternalId>" +
"<ns5:repairOrderNumber>vars.get("OrderNumber")</ns5:repairOrderNumber>";

我可以连接简单的一行,但是当涉及到多行时它不起作用。
单线:

print("PO XML="+"<ns5:repairOrderNumber>"+vars.get("OrderNumber")+"</ns5:repairOrderNumber>");
4

1 回答 1

2

没什么特别的,但是:

  1. 附近缺少收盘引号...xmlns:ns5=\"http://services.portal.com/pro/po\" + "xmlns...- 应该是...xmlns:ns5=\"http://services.portal.com/pro/po\"" + "xmlns...
  2. 缺少转义字符repairOrderNumber>vars.get("OrderNumber")</ns5:->vars.get(\"OrderNumber\")<如果您想在结果中包含字符串本身(即vars.get("OrderNumber"))或单独连接+ vars.get("OrderNumber") +以将表达式解析为变量的值(如在第二个示例中),请使用。

    String poXML="<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"><S:Header/><S:Body><ns7:NewPORequest"+" xmlns:ns2=\"http://services.portal.com/pro/common\""+" xmlns:ns5=\"http://services.portal.com/pro/po\""+" xmlns:ns7=\"http://services.portal.com/proc/ws\">"+"<ns7:tracingLevel>OFF</ns7:tracingLevel><ns7:userId>TestUtil</ns7:userId><ns7:applicationId>RF</ns7:applicationId>"+"<ns7:userType>Buyer</ns7:userType><ns5:PurchaseOrder><ns5:poExternalId>XXX-930220</ns5:poExternalId>"+"<ns5:repairOrderNumber>"+vars.get("OrderNumber")+"</ns5:repairOrderNumber>";
    

看起来使用 StringBuilder.append() 是一种更好的方法

于 2013-07-17T17:23:04.597 回答