我正在开发一款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吗?
我正在开发一个asp.net mvc Web应用程序.现在我的操作系统值等于: -
我正在使用以下代码构建一个包含上述值的URL,如下所示: -
var query = HttpUtility.ParseQueryString(string.Empty);
query["osName"] = OperatingSystem;
var url = new UriBuilder(apiurl);
url.Query = query.ToString();
string xml = client.DownloadString(url.ToString());
Run Code Online (Sandbox Code Playgroud)
但生成的URL将包含操作系统的以下值: -
osName=Microsoft%u00ae+Windows+Server%u00ae+2008+Standard
Run Code Online (Sandbox Code Playgroud)
因此,%u00ae+当我尝试解码%u00ae+使用在线网站(例如http://meyerweb.com/eric/tools/dencoder/)时,UriBuilder会对已注册的符号进行编码,因此它不会解码%u00ae+为寄存器符号??? 所以,有人可以请求,我如何在我的网址内发送注册的标志?这是UrilBuilder中的一个问题吗?
谢谢
编辑 这将清楚地说明我的问题..现在我传递资产名称值,现在查询["assetName"]将获得正确的值..但在查询中,值将被错误地编码(将不能使用UTF8编码)!!!
我在.NET中发现了一个奇怪的行为UriBuilder
Senario 1:
Dim uri As New UriBuilder("http://www.test/login.aspx")
uri.Query = "?test=Test"
Dim url As String = uri.ToString()
Run Code Online (Sandbox Code Playgroud)
运行此代码后,url字符串包含"http://www.test/login.aspx ?? test = Test"
解决方法是不添加?.
Senario 2:
Dim uri As New UriBuilder("http://www.test/login.aspx?test=123")
uri.Query += "&abc=Test"
Dim url As String = uri.ToString()
Run Code Online (Sandbox Code Playgroud)
运行该代码之后我们还有两个?的 "http://www.test:80/login.aspx的??测试= 123&ABC =测试".
在使用uri构建器时,我做错了吗?
好的,所以我已经理解了URL和URI之间的这种差异,我觉得我现在明白了两者之间的区别.
我现在不明白的是为什么.NET Framework有一个UriBuilder类,据我所知,它只适用于作为资源定位器的 URI,因此应该正确地称为UrlBuilder.
有人可以给我一个UriBuilder用于构建不是资源定位器的URI 的示例吗?或者在.NET框架设计中做出这个决定的一些理由?
我正在使用 apache URIBuilder为Rest 服务的GET 方法构建查询字符串。
@RequestMapping(value="/remote")
public Return getTest(Ordine ordine) throws Exception{
...
}
Run Code Online (Sandbox Code Playgroud)
这是输入对象:
public class Ordine{
private List<String> codici;
//..get...set..
}
Run Code Online (Sandbox Code Playgroud)
我无法理解如何将此字符串列表设置为查询参数。
我试图设置参数两次:
URIBuilder builder = new URIBuilder()
.setHost("localhost")
.setPort(8080)
.setScheme("http")
.setPath("/remote")
.setParameter("codici", codicilist.get(0))
.setParameter("codici", codicilist.get(1));
Run Code Online (Sandbox Code Playgroud)
但是第一个参数会被第二个参数覆盖。然后我尝试在参数名称中附加 []:
URIBuilder builder = new URIBuilder()
.setHost("localhost")
.setPort(8080)
.setScheme("http")
.setPath("/remote")
.setParameter("codici[]", codicilist.get(0))
.setParameter("codici[]", codicilist.get(1));
Run Code Online (Sandbox Code Playgroud)
但它只是以名称“codici[]”发送,第一个参数被覆盖。然后我尝试了一个逗号分隔值:
URIBuilder builder = new URIBuilder()
.setHost("localhost")
.setPort(8080)
.setScheme("http")
.setPath("/remote")
.setParameter("codici", String.join(",",codicilist));
Run Code Online (Sandbox Code Playgroud)
但如果失败......我如何设置参数列表?
我正在尝试使用URIBuilder构建URL,由于某种原因,我得到+而不是%20的空间。
这是我的代码:
URI uri=null;
try {
uri = ub.setScheme("http")
.setHost("myalcoholist.com")
.setPath("/drink-management/view-drink-json")
.setParameter("flavor",(String)params[1])
.setParameter("brand",(String)params[2])
.setParameter("company",(String)params[3])
.build();
} catch (URISyntaxException e) {
Log.e("url", "could not parse url", e);
return null;
}
Run Code Online (Sandbox Code Playgroud)
参数:
params[3] = {java.lang.String@831933398520}"contreau france."
params[2] = {java.lang.String@831933398384}"cointreau"
params[1] = {java.lang.String@831933398256}"orange"
Run Code Online (Sandbox Code Playgroud)
结果网址:
"GET /drink-management/view-drink-json?flavor=orange&brand=cointreau&company=contreau+france. HTTP/1.1" 200 538 "-" "Apache-HttpClient/UNAVAILABLE (java 1.4)"
Run Code Online (Sandbox Code Playgroud)
我需要更改哪些参数才能正确编码?
谢谢
在 Web 应用程序中,我有一个用于身份验证的 AudienceURI。当我从如下代码设置它时:
var audience1 = new UriBuilder("dev.website.com")
{
Port = 443,
Scheme = "https",
Path = "/"
}.Uri; // Does not work!
Run Code Online (Sandbox Code Playgroud)
这不是工作。
但是当我这样设置时:
var audenice2 = new Uri("https://dev.website.com"); // It works!
Run Code Online (Sandbox Code Playgroud)
效果很好。
有趣的是,以下工作正常!
var audience3 = new Uri(audience1.ToString()); // It works!
Run Code Online (Sandbox Code Playgroud)
知道有什么区别吗?
我正在寻找构建 URI,例如https://example.com/data/customers?$top=100.
是否有UriBuilder用于创建 OData URI(即可以$适当处理诸如此类的字符)?
我有这样的代码(简化示例):
public Uri CreateMyApiUri(string rootUri, string apiPath, string entity, int pageSize)
{
var builder = new UriBuilder(rootUri);
builder.Path = ConcatPathParts(builder.Path, apiPath, entity); //basically string.Join("/", args), plus code to remove superfluous slashes
var parameters = HttpUtility.ParseQueryString(builder.Query);
if (pageSize > 0) parameters["$top"] = pageSize.ToString();
builder.Query = parameters.ToString();
return builder.Uri;
}
//called like this
var uri = CreateMyApiUri("https://example.com", "data", "customers", 100);
Run Code Online (Sandbox Code Playgroud)
但是,OData 特殊字符$会被编码为在 URI 中使用%24。
我在 GitHub …
参考:org.springframework.web.util.UriBuilder
我正在用来UriBuilder为端点构建 URI
final String response = myWebClient.get()
.uri(uriBuilder -> uriBuilder.scheme("https").path("example.com/mypage").path("/{id}.xml").build(id))
.header(AUTHORIZATION, getAuthorizationHeaderValue(username, password))
.accept(MediaType.TEXT_XML)
.retrieve()
.bodyToMono(String.class)
.block();
Run Code Online (Sandbox Code Playgroud)
但是,我已经在字符串变量中获得了值https://example.com/mypage(从数据库中获取)。我可以直接使用这个字符串而不是单独指定方案和路径/主机吗?现在我正在手动将主字符串分成单独的部分。
如何构建一个URI样www.google.com/p1/p2?what&k1=v1&k2=v2 使用URIBuilder?当我使用 Java 的 URIBuilder.setParameter() 时,我必须传入一个名称和一个值。如何在不使用 URIBuilder.setCustomQuery() 的情况下构建上述 uri?
uribuilder ×10
uri ×5
.net ×3
java ×3
c# ×2
android ×1
asp.net ×1
asp.net-mvc ×1
decoding ×1
odata ×1
parameters ×1
query-string ×1
rest ×1
spring-boot ×1
url ×1
web-services ×1
wif ×1