Как отправить строку в качестве параметра метода API через URL, который содержит '+' в Typescript - PullRequest
0 голосов
/ 07 сентября 2018

Я новичок в Angular 4. Здесь я пытаюсь передать строку в вызов API. В настоящее время я просто присвоил последовательность символов строковой переменной и передал ее по URL-адресу API.

Здесь проблема в том, что когда я получаю строку в API, она теряет + в строке и каждый + заменяется пробелом.

Так как мне передать строку с символами + в API.

app.component.ts

var isValidString = "AhU29yCXdtoaNyQ8rhUBZMz0MieMNBTUaaA04hO+pGzd/iK01sQx6ckMi8LqCdyphShlBt9QhLtCizcUsy708eU90GD7Qg==";
            this.CartdataService.validateString(isValidString).subscribe(data => {
              console.log(data);
            });

Здесь строка содержит +, которого нет, когда я получаю ее в своей функции API.

Angular.Service:

validateString(isValidString){
  return this.http.get(this.validate_User_Password_URL = this.SERVER_URL+`/api/ECOMAPI/validateUserPassword/?mValidateString=${validateString}`);
}

В API

 public async Task<HttpResponseMessage> validvalidateUserPassword(string myString)
        {
          if (myString) != " ")
          {
            .............
          }
       }

При отладке myString в строке вместо пробела +

Может кто-нибудь помочь мне исправить это.

Ответы [ 3 ]

0 голосов
/ 07 сентября 2018

Вы пробовали url-кодирование строки и проверьте, работает ли она? Вы можете использовать encodeURIComponent() для кодирования специальных символов.

var isValidString = "AhU29yCXdtoaNyQ8rhUBZMz0MieMNBTUaaA04hO+pGzd/iK01sQx6ckMi8LqCdyphShlBt9QhLtCizcUsy708eU90GD7Qg==";
var encoded = encodeURIComponent(isValidString);

// then append the encoded one to the url instead of the original string
0 голосов
/ 07 сентября 2018

Я совершенно уверен, что если вы используете HttpParams вместо самостоятельной сборки строки, Angular сделает для вас кодирование. Как то так

let str = "adam+eve"
let params = new HttpParams().set("isValidString", str);
return this.http.get("http://foo.bar", {params}) as Observable<Any>

должно привести к вызову

http://foo.bar? ValidString = адам + канун

0 голосов
/ 07 сентября 2018

Вы можете использовать encodeURI и decodeURI

var encoded = encodeURI(uri);

Ваш код

var isValidString = encodeURI("AhU29yCXdtoaNyQ8rhU+pGzd/i......");
// now call the service method with above encoded string

Перейти к вашему API-коду:

if (!string.IsNullOrEmpty(myString))
{
    myString = HttpUtility.UrlDecode(myString);
    // Rest of your code
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...