2017-01-20 9 views
0

Я пытаюсь получить данные от моего контроллера API Rest, используя anuglarjs http GET-запрос. Однако параметры, которые мне нужно отправить, включают «.». символ, из-за которого URL-адрес не удался. Я пытался кодировать его, но он не работает. Вот что я сделал:Как закодировать URL-адрес в angularJS

function getApplication($http) { 
    this.getData = function(application,name) { 
     return $http({ 
     method : 'GET', 
     url : http://localhost:8080/app/rest/+ 'app/' + encodeURIComponent(name) 
     }).then(function successCallback(response) { 
     return response.data; 
     }, function errorCallback(response) { 
     console.log(response.statusText); 
     }); 
    } 
    } 

Имя парам является app.01.com

и результат URL я получил это:

GET http://localhost:8080/app/rest/app/app.01.com 406 (Not Acceptable) 

кто знает, как кодировать URL, так что я могу получить данные от контроллера отдыха? Спасибо

+0

имя Пасс в качестве объекта на теле запроса. { метод: 'GET', URL: http: // localhost: 8080/app/rest/+ 'app /', data: name } – jbrown

+0

Звучит как плохая реализация со стороны сервиса. Вы можете попробовать вручную заменить '.' на'% 2E'. Если это работает, служба слишком строга в своих правилах синтаксического анализа. –

ответ

1

Использование btoa и atob

<!DOCTYPE html> 
 
<html> 
 
<body> 
 

 
<p>Click the button to decode a base-64 encoded string.</p> 
 

 
<button onclick="myFunction()">Try it</button> 
 

 
<p><strong>Note:</strong> The atob() method is not supported in IE9 and earlier.</p> 
 

 
<p id="demo"></p> 
 

 
<script> 
 
function myFunction() { 
 
    var str = "Hello World!"; 
 
    var enc = window.btoa(str); 
 
    var dec = window.atob(enc); 
 

 
    var res = "Encoded String: " + enc + "<br>" + "Decoded String: " + dec; 
 
    document.getElementById("demo").innerHTML = res; 
 
} 
 
</script> 
 

 
</body> 
 
</html>

function getApplication($http) { 
    this.getData = function(application,name) { 
     return $http({ 
     method : 'GET', 
     url : http://localhost:8080/app/rest/+ 'app/' + window.btoa(name) 
     }).then(function successCallback(response) { 
     return response.data; 
     }, function errorCallback(response) { 
     console.log(response.statusText); 
     }); 
    } 
    } 
+0

большое спасибо! он отлично работает! – RLe

0

Вы пытаетесь поместить данные URL в двойные кавычки? URL: "http://localhost:8080/app/rest/+ 'приложение /' + encodeURIComponent (наименование)"

0

Невозможно, что "." является безоговорочным символом и что «URI, которые отличаются заменой безоговорочного символа на соответствующий процентный кодированный октет US-ASCII, эквивалентны». Следовательно, /% 2E совпадает с /. , и это будет нормализовано.

, то вы можете использовать localhost:8080/app/rest/app/app%2E01.com как ваши URLs

 Смежные вопросы

  • Нет связанных вопросов^_^