Forum Discussion
I investigated the cause a bit deeper and here is something odd about Lithium:
I have another line of code that contains a "?" and this works perfectly. So the character "?" is not an issue.
<#assign url_getTicketsForUserID = baseUrl + "tickets.json?external_id=" + external_id />
<#assign response_getTicketsForUserID = http.client.request(url_getTicketsForUserID).header("Authorization", "Bearer "+ response.content.access_token).json().get() />
When I try this
<#assign url_getUser = baseUrl + "users?query=abc" />
It fails with the following error:
Method "public final lithium.coreapi.webui.template.models.HttpClientResponseTemplateModel lithium.coreapi.webui.template.models.HttpClientRequestTemplateModel.get() throws freemarker.template.TemplateModelException" threw an exception when invoked on lithium.coreapi.webui.template.models.HttpClientRequestTemplateModel object "lithium.coreapi.webui.template.models.HttpClientRequestTemplateModel@66fc9c8f".
When I try the same URL in curl, I get a JSON Object back hence it is a valid command.
The result should be: {"users":[],"next_page":null,"previous_page":null,"count":0}
So what is going on here? Is there anyone from Lithium that can investigate with us on this? We are paying customer and need this roadblock to be resolved before we can launch Lithium.
I think you may need to url encode the query parameter, try the following:
<#assign url_getUser = "https://DOMAIN.zendesk.com/api/v2/users?" + "query=USER@COMPANY.com" ?url/>
Hope this helps,
Yuri
- perk10 years agoAdept
I tried and a type mismatch happens. url can't be assigned to string. url_getUser isn't defined anywhere else.
<#assign url_getUser = baseUrl + "users/query=user@domain.com" ?url/>
- YuriK10 years agoKhoros Expert
You have a space between the end quote (") and the question mark (?). Try removing the space. Also make sure baseUrl is a string. One other thing is to make sure only the query parameters are encoded. The following worked for me:
<#assign baseUrl = "http://test.test.com/"/>
<#assign url_getUser = baseUrl + "users?" + "query=user@domain.com"?url/>
${url_getUser}Hope this helps,
Yuri
- perk10 years agoAdept
Hey thanks for the suggestion.
I tried:
<#assign base = "https://our_domain.zendesk.com/api/v2/"/>
<#assign url_getUser = base + "users?" + "query=username@company.com"?url/>
<#assign response_user = http.client.request(url_getUser).header("Authorization", "Bearer "+ response.content.access_token).json().get() />and still received the same error:
FreeMarker template error
Method "public final lithium.coreapi.webui.template.models.HttpClientResponseTemplateModel lithium.coreapi.webui.template.models.HttpClientRequestTemplateModel.get() throws freemarker.template.TemplateModelException" threw an exception when invoked on lithium.coreapi.webui.template.models.HttpClientRequestTemplateModel object "lithium.coreapi.webui.template.models.HttpClientRequestTemplateModel@13d041cd". See cause exception. The failing instruction (FTL stack trace): ---------- ==> #assign response_user = http.client.r... [in template "retrieve-org-zendesk.ftl" at line 29, column 25]
Totally at wits ends with what is going on in Lithium...