在使用 Android 应用发送 SOAP 请求的过程中遇到了问题,服务器返回了一个错误消息,指出无法处理请求,并且指出了一个特定的值不能为 null。
具体错误日志如下:
10-02 06:05:05.840: E/(1722): RawXML Request:
soap:Server
Server was unable to process request. ---> Value cannot be null.
10-02 06:05:05.840: E/(1722): Parameter name: String
尽管我已经确信传递的所有参数都是有效的,但仍然出现了这个错误。下面是我在代码中实现的更改密码功能的部分代码:
public void ChangePassword(String METHOD, String token, String userId, String oldPassword, String newPassword) {
SoapObject request = new SoapObject(NAME_SPACE, METHOD);
Log.e("####", "ChangePassword token=" + token.trim());
Log.e("####", "ChangePassword userId=" + userId);
Log.e("####", "ChangePassword oldPassword=" + oldPassword);
Log.e("####", "ChangePassword newPassword=" + newPassword);
request.addProperty("token", token.trim());
request.addProperty("userId", userId);
request.addProperty("oldPassword", oldPassword);
request.addProperty("newPassword", newPassword);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
try {
HttpTransportSE transport = new HttpTransportSE(URL);
transport.debug = true;
String action = SOAP_ACTION + METHOD;
Log.e("@@@@", "soap action=" + action);
transport.call(action, envelope);
String respOnse= transport.responseDump;
Log.e("@@@@@@@", "RawXML Request:" + response.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
根据错误信息,我怀疑问题可能在于网络服务端配置或参数名不匹配。建议检查以下几个方面:
- 确保所有参数名称完全匹配,包括大小写。
- 验证服务器端是否能够正确接收并解析这些参数。
- 检查是否有任何参数被意外设置为空值或默认值。
如果上述步骤未能解决问题,建议联系服务器端开发人员以获取进一步的帮助。