Firebase动态链接setLongLink字符串问题
我需要为URL创建一个短链接,如下所示- howdoyoudo.co.il?id=123和evaluator=7 使用下面的代码,我得到了一个链接到howdoyoudo.co.il?id=123的部分快捷方式 我试着像这样设置传递URLhowdoyoudo.co.il?id=123%26evaluator=7 并且仍然得到一个带有部分URL的快捷方式 代码如下-Firebase动态链接setLongLink字符串问题,firebase,firebase-dynamic-links,Firebase,Firebase Dynamic Links,我需要为URL创建一个短链接,如下所示- howdoyoudo.co.il?id=123和evaluator=7 使用下面的代码,我得到了一个链接到howdoyoudo.co.il?id=123的部分快捷方式 我试着像这样设置传递URLhowdoyoudo.co.il?id=123%26evaluator=7 并且仍然得到一个带有部分URL的快捷方式 代码如下- String evaluationLink = "howdoyoudo.co.il?id=123%26evaluator=7"; St
String evaluationLink = "howdoyoudo.co.il?id=123%26evaluator=7";
String longLink = "https://k5xt4.app.goo.gl/?link=" + evaluationLink;
Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLongLink(Uri.parse(longLink))
.buildShortDynamicLink()
.addOnCompleteListener(new OnCompleteListener<ShortDynamicLink>() {
@Override
public void onComplete(@NonNull Task<ShortDynamicLink> task) {
if (task.isSuccessful()) {
Uri shortLink = task.getResult().getShortLink();
Uri flowchartLink = task.getResult().getPreviewLink();
//Partial shortLink :(
} else {
// Error
}
}
});
String evaluationLink=“howdoyoudo.co.il?id=123%26 evaluator=7”;
字符串longLink=”https://k5xt4.app.goo.gl/?link=“+评价链接;
Task shortLinkTask=FirebaseDynamicLinks.getInstance().createdynamicclink()
.setLongLink(Uri.parse(longLink))
.buildShortDynamicClink()
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Uri shortLink=task.getResult().getShortLink();
Uri flowchartLink=task.getResult().getPreviewLink();
//部分短链接:(
}否则{
//错误
}
}
});
更新代码:
Short i = 10; //for testing only
String evaluationLink = "http://howdoyoudo.co.il?id=123";
String longLink = "https://k5xt4.app.goo.gl/?link=" + evaluationLink + "&evaluatorID=" + Integer.toString(i);
String encodedLink = null;
try {
encodedLink = URLEncoder.encode(longLink, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLongLink(Uri.parse(encodedLink))
.buildShortDynamicLink()
.addOnCompleteListener(new OnCompleteListener<ShortDynamicLink>() {
@Override
public void onComplete(@NonNull Task<ShortDynamicLink> task) {
if (task.isSuccessful()) {
// Short link created
Uri shortLink = task.getResult().getShortLink();
Uri flowchartLink =task.getResult().getPreviewLink();
//
} else {
// Error
// ...
}
}
});
Short i=10;//仅用于测试
字符串evaluationLink=”http://howdoyoudo.co.il?id=123";
字符串longLink=”https://k5xt4.app.goo.gl/?link=“+evaluationLink+”&evaluatorID=“+Integer.toString(i);
字符串encodedLink=null;
试一试{
encodedLink=URLEncoder.encode(长链接,“UTF-8”);
}捕获(不支持的编码异常e){
e、 printStackTrace();
}
Task shortLinkTask=FirebaseDynamicLinks.getInstance().createdynamicclink()
.setLongLink(Uri.parse(encodedLink))
.buildShortDynamicClink()
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
//短链接已创建
Uri shortLink=task.getResult().getShortLink();
Uri flowchartLink=task.getResult().getPreviewLink();
//
}否则{
//错误
// ...
}
}
});
编码发送带有多个参数的链接是正确的,但是,您需要编码完整的链接,而不仅仅是给您带来问题的部分
此外,链接应包括url方案,即在这种特殊情况下的http或https:
String evaluationLink = "http://howdoyoudo.co.il?id=123&evaluator=7";
String encodedLink = URLEncoder.encode(evaluationLink, "UTF-8");
请参阅:已解决: 首先,我用如下参数对链接进行编码-
String evaluationLink = "http://howdoyoudo.co.il?id=123&evaluatorID=10";
String encodedLink = null;
try {
encodedLink = URLEncoder.encode(evaluationLink, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String longLink = "https://k5xt4.app.goo.gl/?link=" + encodedLink;
然后我将字符串设置为这样缩短-
String evaluationLink = "http://howdoyoudo.co.il?id=123&evaluatorID=10";
String encodedLink = null;
try {
encodedLink = URLEncoder.encode(evaluationLink, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String longLink = "https://k5xt4.app.goo.gl/?link=" + encodedLink;
最后,我用下面的代码调用了shortinglongLink-
Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLongLink(Uri.parse(longLink))
.buildShortDynamicLink()
.addOnCompleteListener(new OnCompleteListener<ShortDynamicLink>() {
@Override
public void onComplete(@NonNull Task<ShortDynamicLink> task) {
if (task.isSuccessful()) {
// Short link created
Uri shortLink = task.getResult().getShortLink();
Uri flowchartLink = task.getResult().getPreviewLink();
} else {
// Error
// ...
}
}
});
Task shortLinkTask=FirebaseDynamicLinks.getInstance().createdynamicclink()
.setLongLink(Uri.parse(longLink))
.buildShortDynamicClink()
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
//短链接已创建
Uri shortLink=task.getResult().getShortLink();
Uri flowchartLink=task.getResult().getPreviewLink();
}否则{
//错误
// ...
}
}
});
使用建议的encodedLink I get 400:长链接不可解析你说得对,让我更新答案,方案丢失。请查看更新的答案,我只是用你的链接测试了它,没有问题。