Firebase动态链接setLongLink字符串问题

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

我需要为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";
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:长链接不可解析你说得对,让我更新答案,方案丢失。请查看更新的答案,我只是用你的链接测试了它,没有问题。