c# 下的webservice方法:public byte[] Report(Guid id, string[] headers, byte[] content)这三个参数都是由客户端发送给server端的我要用php来实现该方法,请问我应该如何来接收这几个参数呢? 第一个guid我已经能够接收到了 ,是用char类型接收的,但是下边两个怎么也取不到, 求大家帮帮忙~ 

解决方案 »

  1.   

    客户端是通过什么方式传递的,GET还是POST?
      

  2.   

     客户端不明, 现在只能根据一个C#版本的server端以及他的wsdl文件来编写php版本的server端的……  
    请大家帮帮忙~~~  
      

  3.   

    你的客户端指的是浏览器吗?还是另外一种语言实现的客户端请求?
    你们之间通信用的是http吗?把你的环境描述清楚
      

  4.   

    在你的 Report 方法开始处写入
      file_put_contents('test.txt', print_r( func_get_args(), 1));客户端访问后,查看 test.txt 的内容,如还不清楚就贴出来
      

  5.   

    客户端是.net下编写的桌面客户端 ,不是浏览器
    我要用另一种语言 也就是php 来实现server端的, 但是现在客户端传过来的那些参数我现在取不到,抓包能看见,但是我就是只能取到那个id  其他的两个我取不到……我想先取到这三个参数并把它们写到一个文件中,但是只能取到一个id。
    这是我server端实现这个接口的方法:  data1 , data2, data3分别对应着Guid id, string[] headers, byte[] contentpublic function Report($data1, $data2, $data3) {
    $valueArray = get_object_vars($data1); 
      $id = $valueArray["id"]; 
     
      $valueArray = get_object_vars($data2); 
      $headers = $valueArray["headers"]; 
       
      $valueArray = get_object_vars($data3);
      $content =base64_decode($valueArray["content"]); 
     
      $fp=fopen("1.txt", "a");
      fwrite($fp, "Reort:\nid: $id\nhearders: $hearders\ncontent: $content");
              fclose($fp);
    }
      

  6.   

    上句hearders 改为headers   是回复写错了 代码没错
      

  7.   

    作为测试,这样写
    public function Report() {
      file_put_contents('test.txt', print_r( func_get_args(), 1));
    }
      

  8.   

    终于能看见值了……
    但是怎么把headers里面的那三个值取到呢 ?
    这是加了:file_put_contents('test.txt', print_r( func_get_args(), 1));
    之后得到的~ 
    Array
    (
        [0] => stdClass Object
            (
                [id] => 15dbae87-da8b-4d5d-a702-8d1f9e93ceda
                [headers] => stdClass Object
                    (
                        [string] => Array
                            (
                                [0] => JM_MD5: NTY0MTI5MzA1YTU3OWM2NDI0MjQwYTdkMjY4YTcxZGQ=
                                [1] => JM_VER: bmV0MTY=
                                [2] => JM_ID: MTVkYmFlODctZGE4Yi00ZDVkLWE3MDItOGQxZjllOTNjZWRh
                            )                )            [content] => <Node name="JIANGMIN-MADONG" n_clienttype="257" mode="update" /><BaseInfo IP="fb00a8c0;128a8c0;12ba8c0;" Mac="6c-f0-49-96-69-61;00-50-56-c0-00-01;00-50-56-c0-00-08;" OSVersion="Windows 7 Ultimate" VirusLibDate="2011-03-29 13:26:43" mode="update"  />
            ))
      

  9.   

    还有这个conten的值怎么用php的类型来接收呢 ?
      

  10.   

    改回原状
    public function Report($data1, $data2, $data3) {
      $i = $data1->id;
      $headers = $data2->string;
      $content = $data3->content;
    ...其中 $content 的内容可参考下面的代码处理$s = <<< TEXT
    <Node name="JIANGMIN-MADONG" n_clienttype="257" mode="update" /><BaseInfo IP="fb00a8c0;128a8c0;12ba8c0;" Mac="6c-f0-49-96-69-61;00-50-56-c0-00-01;00-50-56-c0-00-08;" OSVersion="Windows 7 Ultimate" VirusLibDate="2011-03-29 13:26:43" mode="update"  />
    TEXT;preg_match_all("@<(\w+) (.+?) +/>@", $s, $r);foreach($r[1] as $i=>$k) {
      parse_str( str_replace('" ', '"&', $r[2][$i]), $ar[$k]);
    }
    print_r($ar);
      

  11.   

    我是这样写的 
    $id=$data1->id;
    $headers=$data2->string;
    $content=$data3->content;

      $fp=fopen("1.txt", "a");
      file_put_contents('1.txt', print_r( func_get_args(), 1));
      fwrite($fp, "Reort:\nid: $id\n");
      fwrite($fp,"headers: $headers\n");
            fwrite($fp,"content: ".$content);
    但是打到txt中是这样的:
    Reort:
    id: 0acde6d1-8e83-4075-a9eb-2494b6b2f9e7
    headers: 
    content: 
    为啥后边两个还是取不到呢 ??