首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web服务\ Android \ Http响应代码415

Web服务\ Android \ Http响应代码415
EN

Stack Overflow用户
提问于 2014-07-17 11:52:39
回答 1查看 743关注 0票数 0

使用Android服务,我正在尝试与一个示例ksoap2 web服务进行通信。我一直收到http响应代码415。我尝试过很多东西,很多来自这个网站,如果有任何想法,我会很感激的。

Service.cs:

代码语言:javascript
复制
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:

代码语言:javascript
复制
[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; }
    }
}

安卓:

代码语言:javascript
复制
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/上工作,但是当从安卓应用程序调用时就不行了。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2014-07-18 02:08:03

在经历了看似永远的事情之后,我发现了一些有用的东西。在Web接口中,将其与ServiceContract和OperationContract放在一起。还可以使用XmlSerializer:

代码语言:javascript
复制
[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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24802798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档