【问题标题】:Android accessing soap serviceAndroid访问soap服务
【发布时间】:2012-04-07 05:21:02
【问题描述】:

我正在使用下面的代码来访问网络服务

public SoapObject getWeather() throws Exception
{
    SoapObject request = new SoapObject("http://www.freewebservicesx.com", "GetCurrentGoldPrice");
    //request.addProperty("PlaceName", city);
    request.addProperty("Username","myusername");
    request.addProperty("Password","pass");
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.setOutputSoapObject(request);
    // It seems that it is a .NET Web service because it doesn't work without next line
    envelope.dotNet = true;

    HttpTransportSE transport = new HttpTransportSE("http://www.freewebservicesx.com/GetGoldPrice.asmx");
    transport.call("http://freewebservicesx.com/GetCurrentGoldPrice", envelope);

    return (SoapObject) envelope.getResponse();
}


public List<CharSequence> getWeatherForecast() 
{
    SoapObject obj = null;
    try {
        obj = getWeather();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
//error is being thrown here
        Log.e("error",e.getMessage());
    }
    SoapObject details = (SoapObject) obj.getProperty("GetCurrentGoldPriceResult");

    List<CharSequence> list = new ArrayList<CharSequence>(details.getPropertyCount());
    for (int i = 0; i < details.getPropertyCount(); i++) {
        Object property = details.getProperty(i);
        if (property instanceof SoapObject) {
            SoapObject weather = (SoapObject) property;
            String day = weather.getProperty("string").toString();
            String min = weather.getProperty("string").toString();
            //String max = weather.getProperty("MaxTemperatureF").toString();
            Log.v("ts is whait ai am ",day);

            list.add(day + " :: " + min);
        }
    }
    return list;
}

http://www.freewebservicesx.com/GetGoldPrice.asmx?op=GetCurrentGoldPrice 包含服务的详细信息。我收到一个失败的活页夹事务错误。

04-07 11:10:01.405:W/System.err(651):SoapFault - 故障代码:'soap:Server' 故障字符串:'System.Web.Services.Protocols.SoapException:服务器无法处理请求。 ---> System.ArgumentNullException: 值不能为空。

【问题讨论】:

标签: android soap


【解决方案1】:

请换行:

envelope.dotNet = "true";

envelope.dotNet = "false";

因为“true”总是向网络服务器发送一个空值,所以设置一个false..

还有其他的……在你的代码中

request.addProperty("Username","myusername");

request.addProperty("Password","pass");

检查客户端和服务器端Web服务上的参数名称(用户名,密码)必须相同,这意味着它区分大小写。

希望代码对你有所帮助。

【讨论】:

  • 还是不行。你能检查我的参数并告诉我它是否正确。链接在我的问题中。
  • string 在您的链接“用户名”中 N 是大写,你输入“用户名”..,我是这个错误..
  • 我试过了。它仍然不起作用-soap:服务器'故障字符串:'System.Web.Services.Protocols.SoapException:服务器无法处理请求。 --->(我认为我调用它的方式有问题
  • 好的,请尝试替换 SoapObject 第一个参数。 "freewebservicesx.com" 添加/结束参数..
  • 好的,现在请调试该代码并告诉我在 getWeather() 方法中出现哪一行错误..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
相关资源
最近更新 更多