android 生成webservice对象 requestto,如何在android中发送soap请求?

您也可以手动构建请求XML,并将其发送到kSOAP进行发送和响应处理。您可以使用soapUI编写您的请求XML,然后将它们保存在res/raw中,其关键字如{%key%}参数应放置在运行时。 这里是更换关键字代码:

// parse the template and replace all keywords

StringBuffer sb = new StringBuffer();

try {

// find all keywords

Pattern patern = Pattern.compile("\\{%(.*?)%\\}");

Matcher matcher = patern.matcher(templateHtml);

while (matcher.find()) {

String keyName = matcher.group(1);

String keyValue = values.get(keyName);

if (keyValue == null) {

keyValue = "";

}

// replace the key with value

matcher.appendReplacement(sb, keyValue);

}

matcher.appendTail(sb);

// return the final string

return sb.toString();

} catch (Throwable e) {

Log.e(LOG_TAG, "Error parsing template", e);

return null;

}

要与KSOAP发送自定义XML请求,你需要使自己的交通运输类。

/**

* Sends SOAP request to the web service.

*

* @param requestContent the SOAP request XML

* @return KvmSerializable object generated from the SOAP response XML

* @throws Exception if the web service can not be

* reached, or the response data can not be processed.

*/

public Object sendSoapRequest(String requestContent)

throws Exception {

// send SOAP request

InputStream responseIs = sendRequest(requestContent);

// create the response SOAP envelope

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

// process SOAP response

parseResponse(responseIs, envelope);

Object bodyIn = envelope.bodyIn;

if (bodyIn instanceof SoapFault) {

throw (SoapFault) bodyIn;

}

return bodyIn;

}

/**

* Sends SOAP request to the web service.

*

* @param requestContent the content of the request

* @return {@link InputStream} containing the response content

* @throws Exception if communication with the web service

* can not be established, or when the response from the service can not be

* processed.

*/

private InputStream sendRequest(String requestContent) throws Exception {

// initialize HTTP post

HttpPost httpPost = null;

try {

httpPost = new HttpPost(serviceUrl);

httpPost.addHeader("Accept-Encoding", "gzip,deflate");

httpPost.addHeader("Content-Type", "text/xml;charset=UTF-8");

httpPost.addHeader("SOAPAction", "\"\"");

} catch (Throwable e) {

Log.e(LOG_TAG, "Error initializing HTTP post for SOAP request", e);

throw e;

}

// load content to be sent

try {

HttpEntity postEntity = new StringEntity(requestContent);

httpPost.setEntity(postEntity);

} catch (UnsupportedEncodingException e) {

Log.e(LOG_TAG, "Unsupported ensoding of content for SOAP request", e);

throw e;

}

// send request

HttpResponse httpResponse = null;

try {

httpResponse = httpClient.execute(httpPost);

} catch (Throwable e) {

Log.e(LOG_TAG, "Error sending SOAP request", e);

throw e;

}

// get SOAP response

try {

// get response code

int responseStatusCode = httpResponse.getStatusLine().getStatusCode();

// if the response code is not 200 - OK, or 500 - Internal error,

// then communication error occurred

if (responseStatusCode != 200 && responseStatusCode != 500) {

String errorMsg = "Got SOAP response code " + responseStatusCode + " "

+ httpResponse.getStatusLine().getReasonPhrase();

...

}

// get the response content

HttpEntity httpEntity = httpResponse.getEntity();

InputStream is = httpEntity.getContent();

return is;

} catch (Throwable e) {

Log.e(LOG_TAG, "Error getting SOAP response", e);

throw e;

}

}

/**

* Parses the input stream from the response into SoapEnvelope object.

*/

private void parseResponse(InputStream is, SoapEnvelope envelope)

throws Exception {

try {

XmlPullParser xp = new KXmlParser();

xp.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);

xp.setInput(is, "UTF-8");

envelope.parse(xp);

} catch (Throwable e) {

Log.e(LOG_TAG, "Error reading/parsing SOAP response", e);

throw e;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值