java - 在Java客户端和PHP服务器之间发送base64Binary SOAP参数

标签 java php nusoap wsimport

我有一个 PHP SOAP 服务器(使用 nuSOAP 和 wsdl)来发送 html 页面的内容。当然,HTML可以使用不同的编码进行编码,但是这个参数是XML中的base64Binary类型,并且我以“ native 编码”接收HTML没有问题。

为了证明,我用 PHP、C# 和 Java 6 编写了三个 SOAP 客户端,对于前两个我没有任何问题。 java 客户端是使用 WSIMPORT 2.1 制作的,代码示例如下:

FileInputStream file = new FileInputStream (new File ("/tmp/chinese.htm"));
BufferedReader  buffer = new BufferedReader (new InputStreamReader (file
                                             ,"BIG5"));
String line;
String content = "";
while ((line = buffer.readLine()) != null)
   content += line+"\n";

FileManagerAPI upload = new FileManagerAPI();
FileManagerAPIPortType servUpload = upload.getFileManagerAPIPort();

BigInteger result = servUpload.apiControllerServiceUploadHTML (
       "http://www.test.tmp/因此鳥哥建議您務.html", content.getBytes());

问题是,在以base64编码发送HTML之前,只有Java客户端将HTML内容编码为UTF8,当PHP接收到这个文件时,服务器会像“UTF8存档”一样管理它,而不是就像“BIG5 文件”。

问题是,如何避免第一次UTF8编码?或者至少在base64之后进行utf-8编码,而不是更早。

提前致谢。

最佳答案

看来您需要先将文件从 UTF-8(我认为这是 /tmp/chinese.htm 的编码)转换为 BIG5。

要转换文件内容,请读取文件并重新编码,例如使用 iconv :

$path = '/tmp/chinese.htm';
$buffer = file_get_contents($path);
$buffer = iconv('UTF-8', 'BIG5', $buffer);

缓冲区 $buffer 现在已从 UTF-8 重新编码为 BIG5。

关于java - 在Java客户端和PHP服务器之间发送base64Binary SOAP参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8412654/

相关文章:

java - 如何解释引用命名空间 java : on a non-java client? 的 WSDL

java - Java 8 并行流中的自定义线程池

PHP file_get_contents 返回 false

php - 如何在 xampp (php version : 7. 1.11) 中启用soapclient?

php - 使用 PHP 和 NuSOAP 通过 HTTPS 发出 SOAP 请求

php - 在 Laravel 4 模型上使用 setConnection

java - android - 删除字符串和arrayList中的字符无法正常工作

java - 将空列表发送到存储过程

java - Maven 不能在 jenkins 上运行(但它可以通过 eclipse 和命令行运行)

php - 使用 PHP 将文件添加到 zip 文件中的文件夹