【问题标题】:pass two parameters with URL link in android在android中使用URL链接传递两个参数
【发布时间】:2012-08-26 08:29:21
【问题描述】:

我对通过 URL 链接传递的两个参数有疑问。谁能帮帮我?

private void FillDetails(String _userid,int _sporttype) {
    al_TeamName=new ArrayList<String>();

    try{
        spf=SAXParserFactory.newInstance();
        sp=spf.newSAXParser();
        xr=sp.getXMLReader();
        URL sourceUrl = new URL(
        "http://10.0.2.2:2291/acd.asmx/Get_Teams?_userid ="+_userid & "_sporttype="+ _sporttype);
        MyHandler mh=new MyHandler();
        xr.setContentHandler(mh);

        xr.parse(new InputSource(sourceUrl.openStream()));
        setListAdapter(new MyAdapter());


    }
    catch(Exception ex)
    {

    }
}

当我使用此代码时,我得到空值。如果我发送单个参数,那么它工作正常。 这是 URL 传递两个参数的正确过程吗?

提前致谢…………

【问题讨论】:

    标签: android url parameter-passing


    【解决方案1】:

    如果您来这里是因为您搜索了在 Kotlin 中工作的版本(像我一样),您可以使用此功能来构建您的 URL:

    import java.net.URL
    
    // Your URL you want to append the query on
    val url: String = "http://10.0.2.2:2291/acd.asmx/Get_Teams"
    
    // The parameters you want to pass
    val params: Map<String, String> = mapOf(
            "_userid"      to _user_id
            , "_sporttype" to _sporttype
    )
    
    // The final build url. Standard encoding for URL is already utf-8
    val final_url: URL = URL(
            "$url?" // Don't forget the question-mark!
            + params.map {
                "${it.key}=${it.value}"
            }.joinToString("&")
    )
    

    【讨论】:

      【解决方案2】:

      解决了。

      URL sourceUrl = new URL("http://0.0.0.0/acd.asmx/GetList?Value1="+Value1+"&ID="+ID);
      

      【讨论】:

        【解决方案3】:

        更新答案:

        现在您的网址中有多个错误:

        URL sourceUrl = new URL("http://10.0.2.2:2291/acd.asmx/Get_Teams?_userid =" + 
            _userid & "_sporttype="+ _sporttype); 
        
        1. 第一个 = 符号前还有一个空格
        2. _userid 变量和字符串的其余部分之间没有 +
        3. &amp; 符号位于第二个字符串之外

        应该是这样的:

        URL sourceUrl = new URL("http://10.0.2.2:2291/acd.asmx/Get_Teams?_userid=" 
            + _userid + "&_sporttype=" + _sporttype);
        

        原始答案:

        您目前在第一个参数后有一个空格而不是= 符号:

        ?_userid "+_userid
        

        应该是

        ?_userid="+_userid
        

        【讨论】:

        • 您能否验证您作为 String _userid 传递给方法的值不为空?
        【解决方案4】:
        "http://10.0.2.2:2291/acd.asmx/Get_Teams?_userid ="+_userid & "_sporttype="+ _sporttype);
        

        您在_userid 之后有一个&,可能谁知道_userid 上有什么。通常单个 & 进行二进制操作,因此您可能正在转换 _userid 产生的内容。另外,如果您还没有这样做,我建议您对 REST 标签进行 URLEncoding

        我建议在开发过程中记录 REST 参数,并仔细检查它是否正确形成

        更新:& 在引号之外,您需要使用 +

         "http://10.0.2.2:2291/acd.asmx/Get_Teams?_userid ="+_userid + "&_sporttype="+ _sporttype);
        

        【讨论】:

        • 这实际上是二进制操作的正确格式之一。但是,这会将“AND”操作应用于字符串的 1 和 0。因此,它使用 _userid 并将其 1 和 0 与“_sporttype”进行比较。你在考虑字符串操作吗?
        • 有几种方法可以操作二进制文件,包括加法和减法。通常,您进行加法以组合已被屏蔽的两组二进制数据。您还可以使用位移位 >> 和
        猜你喜欢
        • 2018-12-22
        • 2013-02-20
        • 2012-03-19
        • 2021-07-04
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 2022-11-30
        相关资源
        最近更新 更多