【问题标题】:Android to Webservice. Values not being passedAndroid 到 Web 服务。未传递的值
【发布时间】:2013-07-31 03:30:18
【问题描述】:

你好。我目前有这样的网络服务

    [WebMethod]
    public bool SyncGeneralDataToServer(string macaddress, string userid,
                                string password, string computername,
                                string dateupdated, string q1, string a1
                                , string q2, string a2, string q3, string a3
                                , string q4, string a4, string q5, string a5
                                , string location, bool onsite)
    {
        MTKBL = new MobileTKBL();
        bool result;
        try
        {
            result = MTKBL.SyncToServer(macaddress, userid,
                                     password, computername,
                                     dateupdated, q1, a1
                                    , q2, a2, q3, a3
                                    , q4, a4, q5, a5
                                    , location, onsite);
        }
        catch (Exception e)
        {
            result = false;
        }


        return result;
    }

我有一个看起来像这样的 android 方法

        public boolean SyncLocalGeneralDataToServer(String macaddress, String userid,
        String password, String computername,
        String dateupdated, String q1, String a1
        , String q2, String a2, String q3, String a3
        , String q4, String a4, String q5, String a5
        , String location, boolean onsite)
{
    boolean result = false;

    String SOAP_ACTION = "http://MTKAndroidService.org/SyncGeneralDataToServer";
    String METHOD_NAME = "SyncGeneralDataToServer";

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);        

    PropertyInfo[] propInfos = new PropertyInfo[17];

    propInfos[0]= setPropertyInfo("macaddress",macaddress,String.class);
    propInfos[1]= setPropertyInfo("userid",userid,String.class);
    propInfos[2]= setPropertyInfo("macaddress",password,String.class);
    propInfos[3]= setPropertyInfo("computername",computername,String.class);
    propInfos[4]= setPropertyInfo("dateupdated",dateupdated,String.class);
    propInfos[5]= setPropertyInfo("q1",q1,String.class);
    propInfos[6]= setPropertyInfo("q2",q2,String.class);
    propInfos[7]= setPropertyInfo("q3",q3,String.class);
    propInfos[8]= setPropertyInfo("q4",q4,String.class);
    propInfos[9]= setPropertyInfo("q5",q5,String.class);
    propInfos[10]= setPropertyInfo("a1",a1,String.class);
    propInfos[11]= setPropertyInfo("a2",a2,String.class);
    propInfos[12]= setPropertyInfo("a3",a3,String.class);
    propInfos[13]= setPropertyInfo("a4",a4,String.class);
    propInfos[14]= setPropertyInfo("a5",a5,String.class);
    propInfos[15]= setPropertyInfo("location",location,String.class);
    propInfos[16]= setPropertyInfo("onsite",onsite,boolean.class);

    for(int i =0; i < propInfos.length; i++)
    {
         request.addProperty(propInfos[i]);
    }

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = true; // put this only if the web service is .NET one
    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

    try {

        androidHttpTransport.call(SOAP_ACTION, envelope);
        SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
        Log.i("myApp", response.toString());
        if(response.toString().equalsIgnoreCase("true")){
            result = true;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}

private PropertyInfo setPropertyInfo(String name,Object value,Object type)
{
    PropertyInfo propInfo =new PropertyInfo();
    propInfo.setName(name);
    propInfo.setValue(value);
    propInfo.setType(type);
    return propInfo;
}

我检查了属性信息值是否正确且完整。问题是 Web 服务接受请求但在数据库中插入空值。我在这里错过了什么?

【问题讨论】:

  • 当您调试服务时,您是否在该方法的变量中看到正确的值?结果 = MTKBL.SyncToServer(macaddress, userid, password, computername, dateupdated, q1, a1, q2, a2, q3, a3, q4, a4, q5, a5, location, onsite);
  • 你的意思是在本地浏览器中?是的,它成功地将其保存在数据库中,这意味着它传递了服务器中的值。但如果它来自 android 没有。所有的值都是空的。这就是我问这个问题的原因。

标签: c# android asp.net web-services


【解决方案1】:

您的命名空间 URL(.net 和 android 端)可能有一个冒号,例如 http:// - 从命名空间中删除 http:// 部分,然后重试。

【讨论】:

  • 嗯,实际上是 url 中的拼写错误导致了问题。 Tnx 为单挑虽然。你指示我检查它。
猜你喜欢
  • 1970-01-01
  • 2016-11-22
  • 1970-01-01
  • 1970-01-01
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多