现在的位置: 首页 > 综合 > 正文

android http通信(二) 英译汉字典实例探究网络通信三种方法

2013年05月28日 ⁄ 综合 ⁄ 共 2598字 ⁄ 字号 评论关闭

方法一:HttpURLConnection  OR HttpGet  HttpClient  HttpResponse 

/*
	 * 
	 * 通过Http请求 调用服务 获得 翻译后的的 结果xml
	 * http://www.webxml.com.cn/WebServices/TranslatorWebService
	 * .asmx/getEnCnTwoWayTranslator?Word=football
	 */
	public static String getTranslateResultByHTTP(String inword)
			throws Exception {
		String res = "";
		String urlstr = "http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx/getEnCnTwoWayTranslator?Word="
				+ inword;
		// 1.HttpURLConnection 测试成功 成功得到xml
		/*
		 * URL url =new URL(urlstr);
		 * 
		 * HttpURLConnection urlConn = (HttpURLConnection) url
		 * .openConnection();// 打开连接,此处只是创建一个实力,并没有真正的连接
		 * 
		 * urlConn.connect();// 连接 InputStream input = urlConn.getInputStream();
		 * InputStreamReader inputReader = new InputStreamReader(input);
		 * BufferedReader reader = new BufferedReader(inputReader); String
		 * inputLine = null; StringBuffer sb = new StringBuffer(); while
		 * ((inputLine = reader.readLine()) != null) {
		 * sb.append(inputLine).append("\n"); } reader.close();
		 * inputReader.close(); input.close(); urlConn.disconnect();
		 * 
		 * res = sb.toString();
		 */

		// 2.HttpPost/HttpGet 一般取得数据用Get就可以了,提交修改采用Post

		HttpGet httpRequest = new HttpGet(urlstr); // 取得HttpClient对象
		HttpClient httpclient = new DefaultHttpClient(); // 请求HttpClient,取得HttpResponse
		HttpResponse httpResponse = httpclient.execute(httpRequest); // 请求成功
		if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {

			// 取得返回的字符串
			String strResult = EntityUtils.toString(httpResponse.getEntity());
			res = strResult;
		} else {
			res = "failed";
		}

		return res;

	}

方法二:SoapObject  SoapSerializationEnvelope  AndroidHttpTransport

/*
	 * 通过WebService KSAOP 获得Webservice本地接口 直接调用方法 不用解析XML了
	 */
	public static String getTranslateResultBySOAP(String inword)
			throws IOException, XmlPullParserException {
		// 命名空间
		String serviceNamespace = "http://WebXml.com.cn/";
		// 请求URL
		String serviceURL = "http://webservice.webxml.com.cn/WebServices/TranslatorWebService.asmx";
		// 调用的方法
		String methodName = "getEnCnTwoWayTranslator";
		// 实例化SoapObject对象
		SoapObject request = new SoapObject(serviceNamespace, methodName);
		request.addProperty("Word", inword);
		// 获得序列化的Envelope
		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);
		envelope.bodyOut = request;
		envelope.dotNet = true;// /注意:这个属性是对dotnetwebservice协议的支持,如果dotnet的webservice
								// 不指定rpc方式则用true否则要用false

		// envelope.setOutputSoapObject(request);
		(new MarshalBase64()).register(envelope);

		// Android传输对象
		AndroidHttpTransport ht = new AndroidHttpTransport(serviceURL);
		ht.debug = true;

		// 调用 没有WWW
		ht.call(serviceNamespace + methodName, envelope);

		if (envelope.getResponse() != null) {
			SoapObject result = (SoapObject) envelope.bodyIn;
			int cnt = result.getPropertyCount();
			if (cnt > 0) { // 服务的返回值是一个数组,第一个元素是oid,第二个是用户的显示名
				String cn = result.getProperty(0).toString();
				// String en= result.getProperty(1).toString();

				return cn;
			}
		}

		return "failed";
	}

抱歉!评论已关闭.