我几乎可以肯定这里没有人能帮我。但我很失望。这是我攻读学士学位的最后一项工作的一部分,我无法让它发挥作用。
我用Java编写了一段代码,该代码将字符串提交给服务器(由我所在大学的一个提供该服务的实验室维护(,服务器处理我的数据,并用我想要的新数据进行回复。
除了一件事,一切都很好有时我需要提交带有ISO-8859-1字符的字符串(如"é"或"ã"(,而这些字符会被发送到服务器
我的问题是,整个提交数据过程都是用WSDL/RMI完成的,我对它的工作原理一无所知。
我刚刚在Eclipse上执行了一个向导,它创建了一个具有我想要的方法(从服务器导入(的类。当我调用我想要的对象时,它会准备我的字符串,并通过apache调用对象将其发送到服务器。
我真的不知道该怎么做才能修复它。我试着用设置调用对象的编码
_call.setEncodingStyle("ISO-8859-1");
但没有成功。
这是执行调用的方法的代码。
public int runTask(java.lang.String userName, java.lang.String password, java.lang.String language, java.lang.String linguisticInfo, java.lang.String inText) throws java.rmi.RemoteException
{
if (super.cachedEndpoint == null) {
throw new org.apache.axis.NoEndPointException();
}
org.apache.axis.client.Call _call = createCall();
_call.setOperation(_operations[1]);
_call.setUseSOAPAction(true);
_call.setSOAPActionURI("");
_call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
_call.setOperationName(new javax.xml.namespace.QName("http://fextwswrapper", "runTask"));
setRequestHeaders(_call);
setAttachments(_call);
try { java.lang.Object _resp = _call.invoke(new java.lang.Object[] {userName, password, language, linguisticInfo, inText});
if (_resp instanceof java.rmi.RemoteException) {
throw (java.rmi.RemoteException)_resp;
}
else {
extractAttachments(_call);
try {
return ((java.lang.Integer) _resp).intValue();
} catch (java.lang.Exception _exception) {
return ((java.lang.Integer) org.apache.axis.utils.JavaUtils.convert(_resp, int.class)).intValue();
}
}
} catch (org.apache.axis.AxisFault axisFaultException) {
throw axisFaultException;
}
}
如果有人能向我解释发生了什么或解决问题,我将不胜感激。
非常感谢!
您需要对发送的数据使用UTF-8编码
默认情况下,ASCII将只读取一个字符的8位,而像您发送的那些特殊字符需要更多的内存,因此文本显示为?