我正在开发一款Android应用.我需要为我的应用程序构建一个URI来发出API请求.除非有另一种方法将变量放在URI中,否则这是我发现的最简单的方法.我发现你需要使用Uri.Builder,但我不太清楚如何使用.我的网址是:
http://lapi.transitchicago.com/api/1.0/ttarrivals.aspx?key=[redacted]&mapid=value
Run Code Online (Sandbox Code Playgroud)
我的方案是http,权限是lapi.transitchicago.com,路径是/api/1.0,路径段是ttarrivals.aspx,查询字符串是key=[redacted]&mapid=value.
我的代码如下:
Intent intent = getIntent();
String value = intent.getExtras().getString("value");
Uri.Builder builder = new Uri.Builder();
builder.scheme("http")
.authority("www.lapi.transitchicago.com")
.appendPath("api")
.appendPath("1.0")
.appendPath("ttarrivals.aspx")
.appendQueryParameter("key", "[redacted]")
.appendQueryParameter("mapid", value);
Run Code Online (Sandbox Code Playgroud)
我明白我能做到URI.add,但我该如何将其整合到Uri.Builder?我要补充的一切都像URI.add(scheme),URI.add(authority)等等?或者这不是这样做的方法吗?此外,还有其他更简单的方法将变量添加到URI/URL吗?
这个简单的单元测试总是通过,我无法弄清楚原因.
@RunWith(JUnit4.class)
class SampleTest {
@Test testSomething() {
Uri uri = Uri.parse("myapp://home/payments");
assertTrue(uri == null);
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止我所尝试的是使用"传统"URI(http://example.com),但uri也是null.
我需要浏览大量的字符串url并从中提取域名.
例如:
http://www.stackoverflow.com/questions将摘录www.stackoverflow.com
我最初使用,new URL(theUrlString).getHost()但URL对象初始化为进程增加了大量时间,似乎不需要.
是否有更快的方法来提取可靠的主机名?
谢谢
编辑:我的错误,是的www.将包含在上面的域名示例中.此外,这些网址可能是http或https
我使用以下内容从URL中提取域:(它们是测试用例)
String regex = "^(ww[a-zA-Z0-9-]{0,}\\.)";
ArrayList<String> cases = new ArrayList<String>();
cases.add("www.google.com");
cases.add("ww.socialrating.it");
cases.add("www-01.hopperspot.com");
cases.add("wwwsupernatural-brasil.blogspot.com");
cases.add("xtop10.net");
cases.add("zoyanailpolish.blogspot.com");
for (String t : cases) {
String res = t.replaceAll(regex, "");
}
Run Code Online (Sandbox Code Playgroud)
我可以得到以下结果:
google.com
hopperspot.com
socialrating.it
blogspot.com
xtop10.net
zoyanailpolish.blogspot.com
Run Code Online (Sandbox Code Playgroud)
前四个案例都很好.最后一个不好.我想要的是:blogspot.com对于最后一个,但它给出了zoyanailpolish.blogspot.com.我究竟做错了什么?
我有URL作为引荐来源网址,并希望从中获取协议和域。
例如:如果https://test.domain.com/a/b/c.html?test=hello输出URL,则输出必须为https://test.domain.com。我已经经历了http://docs.oracle.com/javase/7/docs/api/java/net/URI.html,但似乎找不到任何可以直接这样做的方法。
我没有使用Spring,所以不能使用Sprint类(如果有)。
伙计们,我可以编写自定义登录名以从URL获取端口,域和协议,但是正在寻找已经实现此功能的API,可以将我在各种情况下的测试时间降至最低。
在我的应用程序中,我需要从URL获取favicon.ico.(例如" http://google.com/favicon.ico ").用户可以输入各种URL,我只需要域名.
例子:
http://drive.google.com/bla/bla/bla -> drive.google.com
www.facebook.com/lol -> www.facebook.com
192.168.0.1 -> 192.168.0.1 (but not really necessary)
Run Code Online (Sandbox Code Playgroud)
有没有人有办法得到这个?谢谢!
我即将在我的 Android 应用程序中推出 WebView AdBlocking。我想知道这是否会有效地阻止广告,或者在 Webview 本身内是否还有更多工作要做,而我还没有修改。基本上我有一个存储在 Android 资产中的主机文件,其中列出了数百个广告服务器站点。我将此文件读入 AdBlocker,然后将其应用到 WebViewClient 中,如下所示:
// AdBlocker.isAdURL(String url)
public Boolean isAdURL(String url){
Boolean retValue = false;
if ((url == null) || (url.isEmpty()))
return false;
if ((adServers == null)|| (adServers.size() <1))
return false;
try{
String domainName = getUrlsDomain(url);
if (adServers.contains(domainName)) {
retValue = true;
}
} catch(URISyntaxException e){
}
return retValue;
}
Run Code Online (Sandbox Code Playgroud)
我只在 WebViewClient 中使用它,如下所示:
@Deprecated
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
if (adBlocker.isAdURL(url)) {
ByteArrayInputStream nada = new ByteArrayInputStream("".getBytes());
return new …Run Code Online (Sandbox Code Playgroud) 我看不懂 Java,我需要 Kotlin 的答案,我在这里阅读了一个线程:从给定的 url 获取域名
比如说我有一个这样的字符串: "http://www.myWebsite.com/profile"
那么如何以编程方式仅在这样的字符串中获取域名"myWebsite.com"?
android ×5
java ×4
url ×3
domain-name ×2
uri ×2
dns ×1
kotlin ×1
regex ×1
scala ×1
unit-testing ×1
uribuilder ×1