• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
              C++博客 :: 首頁 :: 新隨筆 ::  ::  :: 管理

            java與php通過webservice進行數據交互

            Posted on 2011-04-10 17:51 Kevin_Zhang 閱讀(1168) 評論(0)  編輯 收藏 引用 所屬分類: PHP
            http://ian-jiang.iteye.com/blog/664727

            剛在項目中應用到了java與php通過webservice進行數據交互。覺得挺有意思,貼出來,跟大家分享。

            一.java編寫webservice服務端,php作為客戶端調用.

            1.首先我們寫一個簡單的java類并發布webservice.

            package com.php;

            import java.util.Map;

             

            public class WebServiceImpl {

             public String sendTransact(Map map) throws Exception {
              System.out.println("::: Call testModel1 :::");
              
              if(map!=null){
               String bugmanifestid = StringUtil.getValue(map.get("bugmanifestid"));
               String editedby = StringUtil.getValue(map.get("editedby"));
               String dditeddate = StringUtil.getValue(map.get("dditeddate"));
               String fullinfo = StringUtil.getValue(map.get("fullinfo"));
               String action = StringUtil.getValue(map.get("action"));
               System.out.println("bugmanifestid ->" +bugmanifestid);
               System.out.println("editedby      ->" +editedby);
               System.out.println("dditeddate    ->" +dditeddate);
               System.out.println("fullinfo      ->" +fullinfo);
               System.out.println("action        ->" +action);
              }
              return "success";
             }
            }

             2.配置server-config.wsdd

            <deployment xmlns="http://xml.apache.org/axis/wsdd/"
             xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

             <handler name="URLMapper"
              type="java:org.apache.axis.handlers.http.URLMapper" />
             <handler name="auth"
              type="java:com.php.AuthenticationHandler" />
             <handler name="URLLogging"
              type="java:com.php.LogHandler">
              <parameter name="filename" value="c:\\MyService.log" />
             </handler>

             <service name="IWebService" provider="java:RPC">
              <parameter name="className"
               value="com.php.WebServiceImpl" />
              <parameter name="allowedMethods" value="*" />
              <namespace>http://localhost:8088/testphpweb</namespace>    
             </service>

             <transport name="http">
              <requestFlow>
               <handler type="URLMapper" />
               <handler type="URLLogging" />
              </requestFlow>
             </transport>

            </deployment>

            3.發布到jboss后,訪問http://localhost:8088/testphpweb/services/IWebService?wsdl能看到xml文件就說明webservice發布好了。

            4.寫testphpweb.php文件

             <?php

            header("Content-Type: text/html; charset=GB2312");
            echo " ::: PHP CALL JAVA-WEBSERVICE ::: <br>";
            require_once("nusoap/lib/nusoap.php");

            // 要訪問的webservice路徑
            $NusoapWSDL="http://localhost:8088/testphpweb/services/IWebService?wsdl";

            // 生成客戶端對象
            $client = new soapclient($NusoapWSDL, true);

            // 設置參數(注意:PHP只能以'數組集'方式傳遞參數,如果服務端是java,用Map接收)
            $param = array( 'bugmanifestid' => 'E090500001',
                'editedby'      => '張三',
                'dditeddate'    => '2009-05-19',
                'fullinfo'      => '已聯系劉德華,籌備今晚吃飯的事,等待回復',
                'action'        => '0');

            echo "begin remote 。。。<br>";
            // 調用遠程方法
            $result = $client->call('sendTransact', array($param));
            echo "end remote 。。。<br>";

            // 顯示執行結果
            if (!$err=$client->getError()){  
             echo '結果 : '.$result;    
            }else{  
             echo '錯誤 : '.$err;  
            }  
            ?>

             5.啟動apache,訪問http://localhost/service/testphpweb.php

            php頁面顯示:

             ::: PHP CALL JAVA-WEBSERVICE :::
            begin remote 。。。
            end remote 。。。
            結果 : success

            jboss后臺監視結果:

            17:12:20,781 INFO  [STDOUT] ::: Call testModel1 :::
            17:12:20,781 INFO  [STDOUT] bugmanifestid ->E090500001
            17:12:20,781 INFO  [STDOUT] editedby      ->張三
            17:12:20,781 INFO  [STDOUT] dditeddate    ->2009-05-19
            17:12:20,781 INFO  [STDOUT] fullinfo      ->已聯系劉德華,籌備今晚吃飯的事,等待回復
            17:12:20,796 INFO  [STDOUT] action        ->0

            到此,php作為客戶端調用java寫的webservice服務端完成.

            二,php編寫webservice服務端,java作為客戶端調用.

            1.編寫php webservice    

            <?php

            header("Content-Type: text/html; charset=GB2312");
            require_once("nusoap/lib/nusoap.php");

            function sendManifest($param)
            {

              //把接收到的數據顯示出來
                return "hello ".$param["projectid"]."<=>".$param["projectname"]."<=>".$param["moduleid"];
            }

            $server = new nusoap_server();

            //配置WSDL namespace
            $server->configureWSDL('myservice',                                    //服務名稱
                 'http://localhost/service/web_call_center.php',                   //tns指定的namespace,一般填寫自己的URI
                 true,                                                             //endpoint url or false
                 'rpc',                                                            //服務樣式
                 'http://schemas.xmlsoap.org/soap/http',                           //傳輸協議,一直是這個。
                 'http://localhost/service/web_call_center.php'                    //wsdl 'types'元素targetNamespace
            );

            // 注冊web服務
            $server->register('sendManifest',                                      // 服務
                array(
             'projectid'     => 'xsd:string',
             'projectname'   => 'xsd:string',
             'moduleid'      => 'xsd:string',
             'modulepath'    => 'xsd:string',
             'bugtitle'      => 'xsd:string',
             'bugtype'       => 'xsd:string',
             'openedby'      => 'xsd:string',
             'openeddate'    => 'xsd:string',
             'assignedto'    => 'xsd:string',
             'assigneddate'  => 'xsd:string',
             'fixedtime'     => 'xsd:string',
             'fullinfo'      => 'xsd:string',
             'bugmanifestid' => 'xsd:string'),                                  // 輸入參數;數組,指定類型
                array('resultCode' => 'xsd:string'),                               // 輸出;數組,指定類型
                'http://localhost/service/web_call_center.php',                    // namespace of method
                '',                                                                // soapaction
                'rpc',                                                             // style
                'encoded',                                                         // use
                'serviceConsumeNotify'                                             // documentation
            );

            $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
            $server->service($HTTP_RAW_POST_DATA);
            ?>

            2.啟動apache后,訪問  http://localhost/service/phpserver.php,如果頁面如下圖所示,表示webservice發布好了。
             

             3.編寫java客戶端CallPhpServer .java 并調用php webservice

            package com.php;

            import java.util.HashMap;
            import java.util.Map;
            import org.apache.axis.client.Call;
            import org.apache.axis.client.Service;

             

            public class CallPhpServer {

             
             public static String callManifest() throws Exception {
              System.out.println("0");
              Service service = new Service();

              Call call = (Call) service.createCall();
              System.out.println("1");
              call.setTargetEndpointAddress(new java.net.URL("http://localhost/service/phpserver.php")); 
              call.setOperationName("sendManifest");
              System.out.println("2");
              Map map=new HashMap();
              map.put("projectid", "109");
              map.put("projectname", new String("新MM國際物流平臺".getBytes(),"iso-8859-1"));
              map.put("moduleid", "11");
              map.put("modulepath", new String("財務管理".getBytes(),"iso-8859-1"));
              map.put("bugtitle", new String("關于總賬報表數據的問題".getBytes(),"iso-8859-1"));
              map.put("bugtype", "TrackThings");
              map.put("openedby", "zhangsan");
              map.put("openeddate", "2009-05-31");
              map.put("assignedto", "liumang");
              map.put("assigneddate", "2009-05-31");
              map.put("fixedtime", "2009-06-03");
              map.put("fullinfo", new String("現在總賬報表頁面下的合計數據不對,煩請抓緊事件核實確認更正,謝謝!".getBytes(),"iso-8859-1"));
              map.put("bugmanifestid", "E090500001");
              call.addParameter("param", org.apache.axis.Constants.SOAP_ARRAY,javax.xml.rpc.ParameterMode.IN);
              call.setReturnType(org.apache.axis.Constants.XSD_STRING);
              System.out.println("3");
              Object obj=call.invoke(new Object[]{map});
              return obj.toString();
             }
             public static void main(String[] args) throws Exception {
              System.out.println("::: call php webservice :::");
              String str = callManifest();

              String result=new String(str.getBytes("iso-8859-1"),"GBK");
              System.out.println(result);
             }
            }
            控制臺顯示結果:

            ::: call php webservice :::
            0
            log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle).
            log4j:WARN Please initialize the log4j system properly.
            1
            2
            3
            hello 109<=>新MM國際物流平臺<=>11
            到此,java作為客戶端調用php的webservice服務端完成.

            精品久久久无码中文字幕天天| 99精品久久久久久久婷婷| 国产成人久久精品区一区二区| 久久久久久a亚洲欧洲aⅴ | 久久成人18免费网站| 久久久久久一区国产精品| 久久精品人人做人人爽电影| 国产韩国精品一区二区三区久久| 久久精品这里只有精99品| 亚洲国产另类久久久精品黑人 | 久久久国产精华液| 久久精品国产精品青草app| 亚洲国产日韩欧美久久| 久久免费视频网站| 亚洲精品无码久久久久| 国产精品亚洲美女久久久| 久久婷婷激情综合色综合俺也去| 久久毛片免费看一区二区三区| 久久婷婷五月综合色奶水99啪| 欧美午夜A∨大片久久| 久久亚洲国产精品一区二区| 亚洲精品tv久久久久| 精品无码人妻久久久久久| 久久久久免费视频| 久久久精品2019免费观看| 一级做a爰片久久毛片毛片 | 久久久久九九精品影院| 伊人丁香狠狠色综合久久| 久久久久久九九99精品| 久久夜色精品国产网站| 2021国产精品久久精品| 久久这里只有精品首页| 久久久久亚洲国产| 亚洲乱码日产精品a级毛片久久| 国产精品美女久久久网AV| 热99re久久国超精品首页| 色综合久久久久| 久久精品成人免费国产片小草| 久久精品国产色蜜蜜麻豆| 亚洲一本综合久久| 久久久久99精品成人片牛牛影视|