微信小程序訪問webService(Java)

    在前臺UI確認後,終於進入到後臺服務的搭建及實現中。所及而來的問題就出現了,爲了提高後臺程序的可用性。設計初期決定,通過搭建java WebService實現。準備工作還是比較充分的,創建WebService框架,實現接口方法。通過建立測試客戶端調用java WebService方法。以上內容均已通過,就在最後通過微信小程序wx.request調用WebService接口時,問題出現了。標準的java WebService返回的爲xml形式的soap描述文件,並非期待的json對象或json形式的字符串。爲此尋覓很多同仁分享的解決方法,終沒有解決。就在昨天與妻子閒談生活瑣事時,突然給了我一些提示。自此將該問題迎刃而解。閒話少許進入正題。

準備篇

1. java WebService 搭建。並實現測試接口和方法。可以通過瀏覽器進行驗證接口提供相關方法。

public class WxSmallProjectImpl implements IWxSmallProject {

	/**
	 * 模糊搜索 實現 查詢結果反饋
	 */
	@Override
	public String getSearchResult(String queryContent) {		// TODO Auto-generated method stub
		Common.ObjectToJson(new Object());
		String result="{\"count\":3,\"data\":[{\"text\":\"demo1\"},{\"text\":\"demo2\"},{\"text\":\"demo3\"}]}";		return result;
	}

}

2.通過測試客戶端(php)調用接口,輸出測試接口。如圖

<?php
	

    //解決OpenSSL Error問題需要加第二個array參數,具體參考 http://stackoverflow.com/questions/25142227/unable-to-connect-to-wsdl
    $client = new SoapClient("http://localhost:8080/CXFDemo/services/wxSmallProject?wsdl",        array(            "stream_context" => stream_context_create(                array(                    'ssl' => array(                        'verify_peer' => false,                        'verify_peer_name' => false,
                    )
                )
            )
        )
    );    //print_r($client->__getFunctions());
    //print_r($client->__getTypes());

 
   
   //調用 微信小程序 服務  成功調用
    $parm = array( 'queryContent'=>$xmlPara);    $result = $client->getSearchResult($parm);	

	

	echo(($result->return));
	
   

} catch (SOAPFault $e) {    print $e;
}	//include('test.html');?>

攻堅篇

1.微信小程序調用java Webservice聯調。通過截取res.data爲xml形式的soap描述文件。如圖

這裏的問題就出來了,返回的xml形式的字符串。因爲微信小程序對於xml解析存在bug。造成無法利用window對象解析xml,不支持HTML標籤的使用。問題找到,下面就是針對該問題解決。

解決方案說明

1.通過套用客戶端,在客戶端實現xml轉化爲Json(字符串)。在這裏就是把wx.request的url地址修改爲php客戶端的引用地址即可。此種問題看似解決了問題,實際上是繞了彎路。此舉只是在與妻子閒聊時,突發奇想的解決方案。

2.藉助github中各位大神,是否有關微信小程序xml解決的工具。果然找到了某位大神提供的開源項目中的某個方法。如圖

自此完成微信小程序調用java WebService(WSDL)的完整實現。天道酬勤,感謝期間一直給我提供技術支持的樑老師。希望能給大家有所幫助。如有問題歡迎大家留言或Email([email protected])給我。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章