• <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 | 99精品久久精品| 69SEX久久精品国产麻豆| 国产韩国精品一区二区三区久久| 久久人人爽人人爽人人AV | 国产女人aaa级久久久级| 亚洲国产香蕉人人爽成AV片久久| 亚洲精品乱码久久久久66| 国产精品久久久天天影视| 亚洲精品WWW久久久久久 | 久久久久亚洲精品天堂久久久久久 | 国产aⅴ激情无码久久| 成人资源影音先锋久久资源网| 久久电影网| 看久久久久久a级毛片| 久久精品无码av| 久久91综合国产91久久精品| 超级碰碰碰碰97久久久久| 久久九九有精品国产23百花影院| 精品无码久久久久国产动漫3d| 久久国产精品二国产精品| 嫩草影院久久99| 91久久精品91久久性色| 亚洲中文字幕无码久久2020| 色综合合久久天天给综看| 91精品免费久久久久久久久| 久久青青草原亚洲av无码app| 久久久精品人妻一区二区三区蜜桃| 97超级碰碰碰碰久久久久| a级成人毛片久久| 精品久久久无码人妻中文字幕豆芽| 99久久综合国产精品免费| 亚洲精品综合久久| 亚洲精品无码久久久| 亚洲伊人久久综合中文成人网| 久久天天躁狠狠躁夜夜av浪潮 | 久久久WWW成人免费精品| 久久99精品久久久久久水蜜桃| 久久国产午夜精品一区二区三区| 精品人妻伦九区久久AAA片69| 精品乱码久久久久久夜夜嗨|