如何将带有查询字符串的 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 参数传递?的主要内容,如果未能解决你的问题,请参考以下文章
设计带有一长串查询参数的 RESTful 查询 API [关闭]