js访问php使用 webservice

客户端:
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>js客户端</title>
    <style type="text/css">
         *{ margin: 0; padding: 0; font-family: "宋体";}
        .box{ width: 500px; height: 200px; border: 1px solid blue; margin: 0 auto; }
        .msg{ width: 100%; height: 40px; line-height: 40px; background-color: #000033; color: #fff2de; display: inline-block;}
        input{ width: 300px; height: 30px; line-height: 30px; border: 1px solid green; margin-top: 10px; margin-bottom: 10px;}
         button{ width:300px; height: 35px;line-height: 35px; border: 1px solid red; margin-left:60px; }
         button:hover{ cursor: pointer;}
    </style>
</head>
<body>
  <div class="box">
      <label class="msg">案例: 客户端输入用户名,向服务器请求数据</label>
      <label>用户名:</label> <input type="text" name="uname" class="uname"><br />
      <button type="button" class="butt" οnclick="getWebserviceData()">js调用webservice接口</button>
  </div>
<script type="text/javascript" src="jquery1.11.3.js"></script>
<script type="text/javascript" src="layer/layer.js"></script>
<script type="text/javascript">
 //得到当前的域名
     var _host=window.location.host;
     var _usernameVal; //用户名输入框的值
    //实现点击事件
     function getWebserviceData(){
         var _uname=$('.uname').val();
         if(_uname == '' || _uname == null){
             layer.alert('很抱歉!没有数据', {icon:5});
             return false;
         }else{
             var _url="http://127.0.0.1/php_app/nusoapClient.php";//api接口地址
             $.get(_url,{"uname":_uname,"call_type":'json'},function(data){
                        layer.msg(data);
                 });
            }
    }
</script>
</body>
</html>

PHP端:

   nusoap client

<?php
/**
 * Created by JetBrains PhpStorm.
 * User: zhanghua 
 * Date: 16-3-11
 * Time: 下午3:53
 * To change this template use File | Settings | File Templates.
 */
require_once ("nusoap/nusoap.php");
$url='http://127.0.0.1/php_app/nusoapService.php';
$client = new soapclient ($url);
$client->soap_defencoding = 'UTF-8';
$client->decode_utf8 = false;
$client->xml_encoding = 'UTF-8';

//得到客户端的数据,将数据传递到service,在service中再去调用第三方文件 查询、操作业务逻辑并等待结果
// 参数转为数组形式传递
$paras = array ('username' =>$_GET['uname'],'calltype'=>$_GET['call_type']);
$result = $client->call ( 'getResponse', $paras ); //去
// 检查错误,获取返回值
if (! $err = $client->getError()) { //如果没有错误
      if($_GET['call_type'] == 'xml'){
          header('content-type: text/xml');
          echo $result;
      }elseif($_GET['call_type'] == 'json'){
          echo " 返回结果: ", $result;
      }
} else {
    echo " 调用出错: ", $err;
}

nusoap servier<pre name="code" class="php"><?php
/**
 * Created by JetBrains7 PhpStorm.
 * User: Administrator
 * Date: 16-3-11
 * Time: 下午3:52
 * To change this template use File | Settings | File Templates.
 */
require_once ("nusoap/nusoap.php");
$server=new soap_server();
// 避免乱码
$server->soap_defencoding = 'UTF-8';
$server->decode_utf8 = false;
$server->xml_encoding = 'UTF-8';
$server->configureWSDL ('test'); // 打开 wsdl 支持
/*
注册需要被客户端访问的程序
类型对应值: bool->"xsd:boolean"    string->"xsd:string"
int->"xsd:int"     float->"xsd:float"
*/
$server->register (
    'getResponse', // 注册需要访问的方法名
    array ("username" => "xsd:string" ), // 参数,默认为 "xsd:string"
    array ("return" => "xsd:string" ) ); // 返回值,默认为 "xsd:string"
//isset  检测变量是否设置
$HTTP_RAW_POST_DATA = isset ( $HTTP_RAW_POST_DATA ) ? $HTTP_RAW_POST_DATA : '';
//service  处理客户端输入的数据
$server->service ( $HTTP_RAW_POST_DATA );

function getResponse($username,$calltype){
    //查询数据
    //得到查询结果
    $array=array(
        'status'=>1,
        'info'=>array(
            'tel'=>'1234567890',
            'sex'=>'1',
            'addres'=>'xxxxxxxxxxxxxxxxx'
        )
    );
    if($calltype == 'json'){
        //将数据json 化
        return json_encode($array);
    }elseif($calltype == 'xml'){
        return arr2xml($array);
    }
}

/**
 * @param $arr
 * @param null $node
 * @return mixed
 *  数组转xml
 */
function arr2xml($arr,$node=null) {
    if($node === null) {
        $simxml = new simpleXMLElement('<?xml version="1.0" encoding="utf-8"?><root></root>');
    } else {
        $simxml = $node;
    }
    // simpleXMLElement对象如何增加子节点?
 foreach($arr as $k=>$v) {
        if(is_array($v)) {
            //$simxml->addChild($k);
            arr2xml($v,$simxml->addChild($k));
        } else if(is_numeric($k)) { //标签不能以数字开头,和变量类似
            $simxml->addChild('item' . $k,$v);
        } else {
            $simxml->addChild($k,$v);
        }
    }

    return $simxml->saveXML();
}


 




在Linux系统中发起Web服务请求通常通过HTTP或HTTPS协议,可以使用一些命令行工具或者编程语言的库来完成。以下是几种常见的方法: 1. **curl**:这是一个非常强大的命令行工具,用于发送各种类型的HTTP请求,包括GET、POST等。例如,你可以使用`curl http://example.com/api`来获取某个API的数据。 ```bash $ curl -X GET https://www.example.com/api?param=value ``` 2. **wget**: 它主要用于下载文件,但也支持HTTP请求。如下载网页内容: ```bash $ wget https://www.example.com ``` 3. **Python requests库**:如果你熟悉Python,可以使用requests模块编写脚本发起请求。示例: ```python import requests response = requests.get('http://api.example.com/data') print(response.json()) ``` 4. **Apache HttpClient (Java)** 或 **axios (JavaScript)**: 如果你在服务器端编程,比如Java或Node.js,你可以使用相应的客户端库发起HTTP请求。例如,在Java中: ```java HttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet("https://api.example.com/resource"); HttpResponse response = httpClient.execute(httpGet); ``` 5. **cURL via PHP**:在PHP中,也可以通过cURL扩展发起请求: ```php $ch = curl_init('http://example.com'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); curl_close($ch); ``` 记得替换上述示例中的URL为你实际需要访问Web服务地址,并根据具体需求调整请求头和数据传递。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值