从PHP发送字节数组到WCF当我在PHP中对我的数组执行var_dump()时,我得到一个数组[2839],这是正常的,但是在服务器端调试时我看到接收到的数组只是字节[5]...我知道如何要解决这个问题?我使用这样的代码$file=file_get_contents($_FILES['Filedata']['tmp_name']);$byteArr=str_split($file);foreach($byteArras$key=>$val){$byteArr[$key]=ord($val);}$client=newSoapClient('http://localhost:8000/MgrService?wsdl',array('location'=>'http://localhost:8000/MgrService/SOAP11','trace'=>true,'soap_version'=>SOAP_1_1));$par1->profileId=13;$par1->photo=$byteArr;$client->TestByte($par1);正如我之前在wcfhost中所做的那样,我只得到byte[5]:/也许它需要一些解码来序列化soap?我应该使用Base64解码吗?一般来说,我只想将发布的文件上传到以byte[]作为参数的c#函数:/Help哦,这个函数的wsdl部分看起来像这样您应该在PHP中使用字符串来模拟字节数组。您甚至可以将语法$str[index]用于字符串。否则,您会有巨大的开销(4倍或8倍,具体取决于负载的int大小加上哈希表开销)。我不太熟悉SOAP扩展所做的类型转换,但使用字符串可能会起作用。编辑:刚刚检查了源代码:text=xmlNewTextLen(str,str_len);xmlAddChild(ret,文本);自由(海峡);所以它已经为你完成了base64编码。编辑2:[推测]你的5字节长的结果是因为在上面的代码之后转换为字符串:if(Z_TYPE_P(data)==IS_STRING){...}else{zvaltmp=*data;zval_copy_ctor(&tmp);convert_to_string(&tmp);str=php_base64_encode((unsignedchar*)Z_STRVAL(tmp),Z_STRLEN(tmp),&str_len);text=xmlNewTextLen(str,str_len);xmlAddChild(ret,文本);自由(海峡);zval_dtor(&tmp);}转换结果为“Array”,长度为5个字节。以上就是C#学习教程:从PHP发送字节数组到WCF的分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:
