使用Android服务,我正在尝试与一个示例ksoap2 web服务进行通信。我一直收到http响应代码415。我尝试过很多东西,很多来自这个网站,如果有任何想法,我会很感激的。
Service.cs:
public class Service : IService
{
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
}
public CompositeType GetDataUsingDataContract(CompositeType composite)
{
if (composite == null)
{
throw new ArgumentNullException("composite");
}
if (composite.BoolValue)
{
composite.StringValue += "Suffix";
}
return composite;
}
}IService.cs:
[ServiceContract]
public interface IService
{
[OperationContract]
string GetData(int value);
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);
}
[DataContract]
public class CompositeType
{
bool boolValue = true;
string stringValue = "Hello";
[DataMember]
public bool BoolValue
{
get { return boolValue; }
set { boolValue = value; }
}
[DataMember]
public string StringValue
{
get { return stringValue; }
set { stringValue = value; }
}
}安卓:
try
{
SoapPrimitive response;
SoapObject request = new SoapObject("http://tempuri.org/", "GetData");
request.addProperty("value", 0);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
envelope.dotNet=true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE("http://www.testsite.com/servicetest/Service.svc");
androidHttpTransport.call("http://tempuri.org/GetData", envelope);
response=(SoapPrimitive)envelope.getResponse();
}
catch(Exception e)
{
Log.e("Exception:",e.getMessage());
}这个异常总是发生在androidHttpTransport.call行,'HTTP失败,HTTP :415。调试web服务时,我可以看到它在本地主机和http://www.testsite.com/servicetest/上工作,但是当从安卓应用程序调用时就不行了。有什么想法吗?
发布于 2014-07-18 02:08:03
在经历了看似永远的事情之后,我发现了一些有用的东西。在Web接口中,将其与ServiceContract和OperationContract放在一起。还可以使用XmlSerializer:
[ServiceContract (Namespace="http://tempuri.org")]
public interface IService
{
[OperationContract(Action = "http://tempuri.org/GetData")]
[XmlSerializerFormat(SupportFaults = false)]
string GetData(int value);在Android代码中,我使用的是SoapEnvelope.VER12,应该使用SoapEnvelope.VER11。
https://stackoverflow.com/questions/24802798
复制相似问题