我试图在我的开发环境中通过soapui测试我的wcf rest serice,虽然我的服务被命中但参数总是接收空值。
我使用POST方法从SOAPUI传递字符串xml,但我总是在XMLData方法的xmlString参数中得到null。我尝试了SOAPUI中的各种组合,但每次收到空值。
我的目的是将xml参数发送到Intranet中的另一个服务。
这是我的服务界面
[ServiceContract]
public interface IPayGService
{
[OperationContract]
[WebInvoke(Method="POST",RequestFormat=WebMessageFormat.Xml,ResponseFormat=WebMessageFormat.Xml,BodyStyle=WebMessageBodyStyle.Bare,UriTemplate="XMLData")]
void XMLData(string xmlString);
}
以下是上述服务合同的实施
public class PayGService : IPayGService
{
public void XMLData(string xmlString)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://10.77.146.113:8081/PAGUIManager/rest/response");
byte[] bytes;
bytes = System.Text.Encoding.ASCII.GetBytes(xmlString);
request.ContentType = "text/xml; encoding='utf-8'";
request.ContentLength = bytes.Length;
request.Method = "POST";
Stream requestStream = request.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
HttpWebResponse response;
response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
Stream responseStream = response.GetResponseStream();
string responseStr = new StreamReader(responseStream).ReadToEnd();
}
}
}
Here's what I'm trying to post from SOAP UI "<![CDATA[<response> <requestType>CC</requestType><pagTransId>CSS1234</pagTransId> <pgTransId>PG12345</pgTransId><amount>1200</amount><Status>SUCCESS</Status> <message>Payment Successful</message><MSISDIN>8888853991</MSISDIN><bankRef>123bank</bankRef> <bankCode>123</bankCode><checkSum>%%%%%%%^^^^&&& </checkSum> <cartInfo>8888853991:001:100</cartInfo></response>]]"
答案 0 :(得分:0)
希望此解决方案能为您提供帮助:
在“请求属性”面板中,有选项“最大大小”,如果将其设置为,例如1048576(1MB),SoapUI不会将超过1MB的结果加载到内存中。
如果在同一面板中使用Dump File属性,则可以轻松地将完整响应转储到文件中,从而避免使用内存。
答案 1 :(得分:0)
问题很可能不在于服务本身,而在于SoapUI
正在发送的内容。
我使用与您的问题相同的OperationContract
进行了小型测试服务。然后我在SoapUI
中创建一个项目来测试它。从SoapUI
发送时,此原始xml有效:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:XMLData>
<tem:xmlString><![CDATA[<response> <requestType>CC</requestType><pagTransId>CSS1234</pagTransId> <pgTransId>PG12345</pgTransId><amount>1200</amount><Status>SUCCESS</Status> <message>Payment Successful</message><MSISDIN>8888853991</MSISDIN><bankRef>123bank</bankRef> <bankCode>123</bankCode><checkSum>%%%%%%%^^^^&&& </checkSum> <cartInfo>8888853991:001:100</cartInfo></response>]]></tem:xmlString>
</tem:XMLData>
</soapenv:Body>
</soapenv:Envelope>
我的SoapUI
版本比您的版本旧,所以我不知道您应该在哪里测试原始xml。但是我可以在屏幕截图中看到Raw
标签,所以也许就是这个地方。您可能必须更改tem
命名空间,以使其与您在服务上的命名空间匹配。