最近遇到非常头痛的问题,有人提供了一个webservers的接口,让我把本地的一些数据通过这个接口传递过去。因为本人对这块不了解,因为事情比较紧急,所以也没有太多的时间来仔细研究和学习这块东西,现在需要的是尽快的结束。
我在网上查阅了一些资料,几乎是相同的,而且作用都不大,其中都提到了使用“nusoap.php”这个工具包,可网上很难找到这个工具包,找到的内容且都不同,郁闷。
大虾们,有清楚这块的吗,现在需要的是通过这个接口将本地数据库中的数据传递过去,并且其中还可以传递附件,到底应该怎么去做啊。在线等待!!!

解决方案 »

  1.   

    我见过用zend加密的这个nusoap,用来与服务器进行交互数据,如商业软件在线注册功能,关于使用方法可以使用Google搜素网上一大堆,不过如果是再开发的话你需要向那个人要使用的方法<?php
    // Pull in the NuSOAP code
    require_once('nusoap.php');
    // Create the server instance
    $server = new soap_server;
    // Register the method to expose
    $server->register('hello');
    // Define the method as a PHP function
    function hello($name) {
        return 'Hello, ' . $name;
    }
    // Use the request to (try to) invoke the service
    $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
    $server->service($HTTP_RAW_POST_DATA);
    ?>
    本篇文章来源于 PHP资讯 原文链接:http://www.phpq.net/tutorial/nusoap.html
      

  2.   

    HTTP通信接口是跨语言的。
    只要做到遵循HTTP协议通信,就可以。如果选择PHP的话,可以尝试一下Zend_HTTP框架,它是一个使用非常方便的HTTP客户程序框架
    手册地址:http://framework.zend.com/manual/zh/zend.http.html
      

  3.   

    先去下载相关文件和文档,http://sourceforge.net/projects/nusoap/然后你让他给你一些关于webservices接口的说明文档或者别的资料。
      

  4.   

    我想我有个JAVA的代码,是客户提供的一个JAVA的例子,需要将传递的数据进行封装传递,哪位可以把以下的代码翻译成PHP的呢,小弟的JAVA水平比较低,只能翻译一部分。
    package webservice;public class Article  extends webservice.ArticleDb  implements java.io.Serializable {
        private java.lang.String commendId;    public Article() {
        }    public Article(
               java.lang.String articleContent,
               java.lang.String articleTitle,
               webservice.Attribute[] attr,
               java.lang.String createTime,
               java.lang.String criticalType,
               java.lang.String department,
               java.lang.String description,
               java.lang.String disableTime,
               java.lang.String enableTime,
               java.lang.String important,
               java.lang.String keyword,
               java.lang.String loginName,
               java.lang.String modifyTime,
               java.lang.String password,
               java.lang.String pubshTime,
               java.lang.String status,
               java.lang.String subType,
               java.lang.String type,
               java.lang.String webName,
               java.lang.String commendId) {
            super(
                articleContent,
                articleTitle,
                attr,
                createTime,
                criticalType,
                department,
                description,
                disableTime,
                enableTime,
                important,
                keyword,
                loginName,
                modifyTime,
                password,
                pubshTime,
                status,
                subType,
                type,
                webName);
            this.commendId = commendId;
        }
        /**
         * Gets the commendId value for this Article.
         * 
         * @return commendId
         */
        public java.lang.String getCommendId() {
            return commendId;
        }
        /**
         * Sets the commendId value for this Article.
         * 
         * @param commendId
         */
        public void setCommendId(java.lang.String commendId) {
            this.commendId = commendId;
        }    private java.lang.Object __equalsCalc = null;
        public synchronized boolean equals(java.lang.Object obj) {
            if (!(obj instanceof Article)) return false;
            Article other = (Article) obj;
            if (obj == null) return false;
            if (this == obj) return true;
            if (__equalsCalc != null) {
                return (__equalsCalc == obj);
            }
            __equalsCalc = obj;
            boolean _equals;
            _equals = super.equals(obj) && 
                ((this.commendId==null && other.getCommendId()==null) || 
                 (this.commendId!=null &&
                  this.commendId.equals(other.getCommendId())));
            __equalsCalc = null;
            return _equals;
        }    private boolean __hashCodeCalc = false;
        public synchronized int hashCode() {
            if (__hashCodeCalc) {
                return 0;
            }
            __hashCodeCalc = true;
            int _hashCode = super.hashCode();
            if (getCommendId() != null) {
                _hashCode += getCommendId().hashCode();
            }
            __hashCodeCalc = false;
            return _hashCode;
        }    // Type metadata
        private static org.apache.axis.description.TypeDesc typeDesc =
            new org.apache.axis.description.TypeDesc(Article.class, true);    static {
            typeDesc.setXmlType(new javax.xml.namespace.QName("http://webservice", "Article"));
            org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
            elemField.setFieldName("commendId");
            elemField.setXmlName(new javax.xml.namespace.QName("http://webservice", "commendId"));
            elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
            elemField.setNillable(true);
            typeDesc.addFieldDesc(elemField);
        }    /**
         * Return type metadata object
         */
        public static org.apache.axis.description.TypeDesc getTypeDesc() {
            return typeDesc;
        }    /**
         * Get Custom Serializer
         */
        public static org.apache.axis.encoding.Serializer getSerializer(
               java.lang.String mechType, 
               java.lang.Class _javaType,  
               javax.xml.namespace.QName _xmlType) {
            return 
              new  org.apache.axis.encoding.ser.BeanSerializer(
                _javaType, _xmlType, typeDesc);
        }    /**
         * Get Custom Deserializer
         */
        public static org.apache.axis.encoding.Deserializer getDeserializer(
               java.lang.String mechType, 
               java.lang.Class _javaType,  
               javax.xml.namespace.QName _xmlType) {
            return 
              new  org.apache.axis.encoding.ser.BeanDeserializer(
                _javaType, _xmlType, typeDesc);
        }}
      

  5.   

    用不着翻译,
    先观测HTTP协议的通信内容,
    向客户索取协议规范。然后用PHP写个客户端,
    有现成的直接用现成的,没有现成的,整个客户端都可以用PHP开发。
    如果lz既不理解HTTP协议,对XML又是云里雾里,恐怕开发这个有难度。
      

  6.   

    不知道这个对你是否有帮助
    <?php
    function HttpSoap($server, $port, $url, $namespace, $action, $data) {
    $fp = @fsockopen($server, $port);
    if (!$fp) {
    return FALSE;
    } else {
    $soapData = ConstructData($namespace, $action, $data);
    $length = strlen($soapData);
    $out = "POST $url HTTP/1.1\r\n";
    $out .= "Host: $server\r\n";
    $out .= "Content-Type: text/xml; charset=utf-8\r\n";
    $out .= "Content-Length: $length\r\n";
    $out .= "SOAPAction: \"$namespace/$action\"\r\n\r\n";
    $out .= $soapData;
    $out .= "\r\n\r\n";
    fputs($fp, $out);
    stream_set_timeout($fp, 2);
    $header = "";
    while($line = trim(fgets($fp))) {
    $header .= $line."\n";
    }
    $dataPos = strpos($header, "Content-Length: ") + 16;
    $dataEnd = strpos($header, "\n", $dataPos);
    $dataLength = substr($header, $dataPos, $dataEnd - $dataPos);
    $data = "";
    if($dataLength > 0) {
    $data = fread($fp, $dataLength);
    }
    fclose($fp);
    if(strlen($data) != $dataLength || $dataLength <= 0) {
    return FALSE;
    }
    return $data;
    }
    }
    function ConstructData($namespace,$action,$data) {
    $soapData = "<?xml version='1.0' encoding='utf-8'?>\r\n";
    $soapData .= '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    ';
    $soapData .= " <soap:Body>\r\n";
    $soapData .= " <$action xmlns=\"$namespace\">\r\n";
    foreach($data as $name => $value) {
    $name = iconv("GBK","UTF-8",$name);
    $value= iconv("GBK","UTF-8",$value);
    $soapData .= "<$name>$value</$name>\r\n";
    }
    $soapData .= " </$action>\r\n";
    $soapData .= " </soap:Body>\r\n";
    $soapData .= "</soap:Envelope>"; 
    return $soapData;
    }$data=array(
    'username'=>'test', 
    'pwd'=>'123456'
    );
    echo HttpSoap($server, $port, $url, $namespace, $action, $data);
    ?>