如何将带有查询字符串的 url 作为 api 参数传递?

Posted

技术标签:

【中文标题】如何将带有查询字符串的 url 作为 api 参数传递?【英文标题】:How to pass url with query string as an api parameter? 【发布时间】:2020-09-04 04:57:41 【问题描述】:

我目前正在将 api 集成到我的应用程序中。其中一个参数是 content_url,它是内容的有效 html URL。如何通过查询字符串传递整个 url?

API Endpoint 参数位于下方。

            var contentUrl
            = "https://www.finnet.com.tr/CMS/OSMANLIMENKULTEST/MailSablon/RaporPaylasimHtml/OSMANLIKP/FXBULTEN/2020-01-20/null";
        var url = "https://campaigns.zoho.com/api/v1.1/createCampaign?" +
                  "resfmt=json&" +
                  "campaignname=Campaign12&" +
                  "from_email=mert.metin@finnet.gen.tr&" +
                  "subject=Test Create Campaign 11&" + 
                  "list_details=%7Bd6ef220cc42b50d7ddf3236cbb9b8847894375f7a7d2d66f%3A%5B%5D%2Cd6ef220cc42b50d71438a8b019c635e5894375f7a7d2d66f%3A%5B%5D%7D&" +
                  "content_url=" + contentUrl;

内容网址为https://www.finnet.com.tr/CMS/OSMANLIMENKULTEST/MailSablon/RaporPaylasimHtml?SiteKod=OSMANLIKP&Kod=FXBULTEN&Tarih=2020-01-20

但我发布 url 值,API 获取 url 直到第一个 & & 字符。所以缺少剩余参数。我需要将整个 url 作为参数传递。

预期结果=https://www.finnet.com.tr/CMS/OSMANLIMENKULTEST/MailSablon/RaporPaylasimHtml?SiteKod=OSMANLIKP&Kod=FXBULTEN&Tarih=2020-01-20

实际结果=https://www.finnet.com.tr/CMS/OSMANLIMENKULTEST/MailSablon/RaporPaylasimHtml?SiteKod=OSMANLIKP

我的应用程序基于 MVC 和 C# 语言。我还用双引号将 url 括起来,但由于 Api Response 是 INVALID IMPORT URL,所以它不起作用。

【问题讨论】:

你必须对你的contentUrl进行url编码。 & 后面的其他部分将被视为url 的下一个参数。 @ivion 我用 urlencode 进行了更改,但 zoho 响应出现 500 错误。它是正确的编码网址吗?我添加了content_url=https%3a%2f%2fwww.finnet.com.tr%2fCMS%2fOSMANLIMENKULTEST%2fMailSablon%2fRaporPaylasimHtml%3fSiteKod%3dOSMANLIKP%26Kod%3dFXBULTEN%26Tarih%3d2020-01-20有一个与api相关的错误,来自api支持团队的信息。 【参考方案1】:
   You must encode the URL before passing as a parameter as

    myURL="myURL1?redir=" + Server.URLEncode("myURL2?id=4&user=test");

    It will create a correct URL without '?' and "&" characters as
  

    myURL= myURL1?redir=myURL2%3id%34%26user%3dtest

    To extract your redirect url from this encoded url you must use     
    HttpServerUtility.UrlDecode to turn it into a correct url again.

【讨论】:

以上是关于如何将带有查询字符串的 url 作为 api 参数传递?的主要内容,如果未能解决你的问题,请参考以下文章

Rest api如何获取参数?

如何发送带有查询字符串的 URL 作为查询字符串

设计带有一长串查询参数的 RESTful 查询 API [关闭]

ASIHttpRequest - 如何将参数的 NSDictionary 转换为 url 编码的查询参数字符串?

如何将查询字符串作为获取参数快速发送

Spring Boot - 如何通过带有查询参数的 url 发送 POST 请求并将响应存储在方法中?