网址将被分割为" ["方括号

时间:2016-12-23 11:07:17

标签: java android url

这是一个简单的问题,我现在卡住了几个小时,网址没有被完全删除,它被分割如下:

Image

这就是我在代码中使用的内容:

Dictionary<string, object>

我也试过编码和解码String但这不起作用。我希望整件事都在网址内。

  String Url1 = Myservice.S_DELETE_LIBRARY_BOOK+"["+bookData.get(position).getBookId()+"]"+"&libraryId="+LibId+"&userId="+Uid;

   //did encoding and decoding for testing
  try {
      Url1= URLEncoder.encode(Url1,"UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    try {
        Url1 = URLDecoder.decode(Url1, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }

  Log.d("LibraryAdapterUrl",""+Url1);

该部分不考虑作为网址,

我甚至粘贴了所有网址而不是[2]&libraryId=1&userId=4 ,但它仍然会被分割为[2]

整个网址在浏览器中正常运行 我做错了什么?

3 个答案:

答案 0 :(得分:2)

除此之外,为什么不使用以下方法:

String test = "http://<ipaddress>/"+URLEncoder.encode("yourArrayValue", "UTF-8") + "&libraryId="  + LibId + "&userId=" + Uid;

或者

public class HttpClientTest {
        public static void main(String[] args) throws URISyntaxException {
            List<NameValuePair> qparams = new ArrayList<NameValuePair>();
            qparams.add(new BasicNameValuePair("query1", "query1Value"));
            qparams.add(new BasicNameValuePair("query2", "query2Value"));
            qparams.add(new BasicNameValuePair("query3", "query3Value"));                
            URI uri = URIUtils.createURI("http", "www.google.com", -1, "/search",
                                         URLEncodedUtils.format(qparams, "UTF-8"), null);
            HttpGet httpget = new HttpGet(uri);
            System.out.println(httpget.getURI());
            //http://www.google.com/search?query1=query1Value&query2=query2Value&query3=query3Value
        }
        }

答案 1 :(得分:2)

仅对问号

后的查询字符串进行编码
String url = Myservice.S_DELETE_LIBRARY_BOOK + "?xxx=" 
       + URLEncoder.encode("[" + bookData.get(position).getBookId() + "]", "UTF-8")
       + "&libraryId="  + LibId + "&userId=" + Uid;

如果[需要成为网站网址的一部分,那么你就是运气不好,这是非法的。

答案 2 :(得分:1)

你可以解决这个问题。

假设你传递了url值,如下所示。 (URL中有大括号)

MyLandingURL = URL&GT; http://www.dumyurl.co.uk/[2]stackoverflow

然后下面的代码将拆分并收集在&gt;之后的数组中的url。符号。代码标识&gt;(大于符号)之后的完整URL。因此,大括号不会妨碍您的代码。

所以你最终收集了字符串 的 http://www.dumyurl.co.uk/[2]stackoverflow

public String readURLor(String URLidentity) throws Exception {

    String locator = properties.getProperty(URLidentity);

    // Split the value which contains locator type and locator value
    String URLType = locator.split(">")[0];
    String URLvalue = locator.split(">")[1];

    if (URLType.toLowerCase().equals("url"))
        return URLvalue;
    else
        throw new Exception("URL Type '" + URLType + "'is not defined in OR file!!");