我正在尝试从我的.NET Web服务接收格式为base64array的图像。 如果我从Chrome浏览我的Web服务,则可以正常使用它们,但是当我使用ksoap2从Android应用程序调用它们时,会出现异常。
Chrome就是这样显示正确的base64array:
(是的,这三个图像是相同的,所以这三个base64array也相同)
这是我用来调用此Web服务的代码(我通常在使用其他Web服务):
envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = requestFotografias;
envelope.dotNet = true;
envelope.setOutputSoapObject(requestFotografias);
transporte = new HttpTransportSE(URL);
try
{
transporte.call(SOAP_ACTION_DOWNLOAD_PHOTO, envelope);
SoapObject result = (SoapObject) envelope.getResponse(); //Exception in this line
for (int i = 0; i < result.getAttributeCount(); i++)
{
SoapObject object = (SoapObject) result.getAttribute(i);
byte[] imagen = (byte[]) object.getAttribute(0);
this.listaImagenes.add(imagen);
}
}
catch (Exception e)
{
correcto = false;
System.out.println(e.toString());
}
这是我的网络服务(C#)的代码:
[WebMethod]
public List<Byte[]> DownloadImages(int idEstablecimiento)
{
List<CAD.fotografia> listaFotografias = new List<CAD.fotografia>();
listaFotografias = BLL.Fotografia.GetAllFotografiasFromEstablecimiento(idEstablecimiento);
List<Byte[]> listaImagenes = new List<Byte[]>();
foreach (CAD.fotografia fotografia in listaFotografias)
{
string path = fotografia.ruta_fotografia.ToString();
FileStream objfilestream = new FileStream(path, FileMode.Open, FileAccess.Read);
Byte[] imagen = new byte[objfilestream.Length];
objfilestream.Read(imagen, 0, imagen.Length);
listaImagenes.Add(imagen);
}
return listaImagenes;
}
我得到的例外是西班牙语,所以我不会在这里发布,但与System.FormatException和System.Number.StringToNumber相关,但由于我只使用二进制,所以意义不大。
编辑:这是完整的异常跟踪:
SoapFault - faultcode: 'soap:Client' faultstring: 'System.Web.Services.Protocols.SoapException: El servidor no puede leer la solicitud. ---> System.InvalidOperationException: Error en el documento XML (1, 336). ---> System.FormatException: La cadena de entrada no tiene el formato correcto.
en System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
en System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
en Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read12_DownloadImages()
en Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer4.Deserialize(XmlSerializationReader reader)
en System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
--- Fin del seguimiento de la pila de la excepción interna ---
en System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
en System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle)
en System.Web.Services.Protocols.SoapServerProtocol.ReadParameters()
--- Fin del seguimiento de la pila de la excepción interna ---
en System.Web.Services.Protocols.SoapServerProtocol.ReadParameters()
en System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()' faultactor: 'null' detail: org.kxml2.kdom.Node@42d06478
关于什么会导致此问题或如何对其进行调试的任何想法? 请记住,我可以访问同一服务器中的其他Web服务。
确保idEstablecimiento是一个int值。