gpt4 book ai didi

android - Android 中的 REST 和 SOAP 网络服务

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:53:05 25 4
gpt4 key购买 nike

我找到了使用 kSOAP api 来使用 SOAP 网络服务的教程。任何人都可以向我提供有关在 android 中获取 REST web 服务和 SOAP web 服务的示例程序(教程)。我用谷歌搜索了很多,但没有找到此类教程。

最佳答案

SOAP

优点:

  • Langauge, platform, and transport agnostic
  • Designed to handle distributed computing environments
  • Is the prevailing standard for web services, and hence has better support from other standards (WSDL, WS-*) and tooling from vendors
  • Built-in error handling (faults)
  • Extensibility

缺点:

  • Conceptually more difficult, more "heavy-weight" than REST
  • More verbose
  • Harder to develop, requires tools

休息

优点:

  • Language and platform agnostic
  • Much simpler to develop than SOAP
  • Small learning curve, less reliance on tools
  • Concise, no need for additional messaging layer
  • Closer in design and philosophy to the Web

缺点:

  • Assumes a point-to-point communication model--not usable for distributed computing environment where message may go through one or more intermediaries
  • Lack of standards support for security, policy, reliable messaging, etc., so services that have more sophisticated requirements are harder to develop ("roll your own")
  • Tied to the HTTP transport model

REST 示例

使用 apache http jar

public void callRestWebService(){  
System.out.println(".....REST..........");
HttpClient httpclient = new DefaultHttpClient();
HttpGet request = new HttpGet(wsdlURL);
request.addHeader("company name", "abc");

request.addHeader("getAccessNumbers","http://service.xyz.com/");
ResponseHandler<String> handler = new BasicResponseHandler();
try {
result = httpclient.execute(request, handler);
System.out.println("..result..."+result);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
httpclient.getConnectionManager().shutdown();

} // end callWebService()
}

SOAP 示例

您可以使用 ksoap 或自己创建 soap xml 并发送到 url

private boolean callSOAPWebService() {
OutputStream out = null;
int respCode = -1;
boolean isSuccess = false;
URL url = null;
HttpsURLConnection httpURLConnection = null;

try {

url = new URL(wsdlURL);


httpURLConnection = (HttpsURLConnection) url.openConnection();

do {
// httpURLConnection.setHostnameVerifier(DO_NOT_VERIFY);
httpURLConnection.setRequestMethod("POST");
httpURLConnection
.setRequestProperty("Connection", "keep-alive");
httpURLConnection
.setRequestProperty("Content-Type", "text/xml");
httpURLConnection.setRequestProperty("SendChunked", "True");
httpURLConnection.setRequestProperty("UseCookieContainer",
"True");
HttpURLConnection.setFollowRedirects(false);
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
httpURLConnection.setUseCaches(true);
httpURLConnection.setRequestProperty("Content-length",
getReqData().length + "");
httpURLConnection.setReadTimeout(10 * 1000);
// httpURLConnection.setConnectTimeout(10 * 1000);
httpURLConnection.connect();

out = httpURLConnection.getOutputStream();

if (out != null) {
out.write(getReqData());
out.flush();
}

if (httpURLConnection != null) {
respCode = httpURLConnection.getResponseCode();
Log.e("respCode", ":" + respCode);

}
} while (respCode == -1);

// If it works fine
if (respCode == 200) {
try {
InputStream responce = httpURLConnection.getInputStream();
String str = convertStreamToString(responce);
System.out.println(".....data....." + new String(str));

// String str
// =Environment.getExternalStorageDirectory().getAbsolutePath()+"/sunilwebservice.txt";
// File f = new File(str);
//
// try{
// f.createNewFile();
// FileOutputStream fo = new FileOutputStream(f);
// fo.write(b);
// fo.close();
// }catch(Exception ex){
// ex.printStackTrace();
// }
} catch (Exception e1) {
e1.printStackTrace();
}
} else {
isSuccess = false;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
out = null;
}
if (httpURLConnection != null) {
httpURLConnection.disconnect();
httpURLConnection = null;
}
}
return isSuccess;
}

public static String createSoapHeader() {
String soapHeader = null;

soapHeader = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+ "<soap:Envelope "
+ "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\""
+ " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
+ " xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"" + ">";
return soapHeader;
}

public static byte[] getReqData() {
StringBuilder requestData = new StringBuilder();

requestData.append(createSoapHeader());
requestData
.append("<soap:Body>"
+ "<getAccessNumbers"
+ " xmlns=\"http://service.xyz.com.com/\""

+ "</getAccessNumbers> </soap:Body> </soap:Envelope>");

return requestData.toString().trim().getBytes();
}

private static String convertStreamToString(InputStream is)
throws UnsupportedEncodingException {
BufferedReader reader = new BufferedReader(new InputStreamReader(is,
"UTF-8"));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();

}

关于android - Android 中的 REST 和 SOAP 网络服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6929180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com