我是Angular 4的新手。在这里,我试图将字符串传递给API调用。 目前,我只是将字符序列分配给字符串变量,然后将其传递给API URL。
这里的问题是,当我在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时,字符串具有空格而不是+
谁能帮我解决这个问题。
答案 0 :(得分:0)
您可以使用encodeURI和decodeURI
public enum DisplayStatus {
[Display(Name = "ACTIVE")]
Active= 1,
[Display(Name = "DELETED")]
Deleted = 11
}
public class Vehicle_DTO {
[EnumDataType(typeof(DisplayStatus))]
[Display(Name = "STATUS")]
public int Status { get; set; }
}
// ...
gridControl1.DataSource = new List<Vehicle_DTO> {
new Vehicle_DTO() { Status = 1 },
new Vehicle_DTO() { Status = 11 },
new Vehicle_DTO() { Status = 11 },
};
您的代码
var encoded = encodeURI(uri);
移至您的API代码:
var isValidString = encodeURI("AhU29yCXdtoaNyQ8rhU+pGzd/i......");
// now call the service method with above encoded string
答案 1 :(得分:0)
您是否尝试过对字符串进行url编码并检查其是否有效?
您可以使用encodeURIComponent()
来编码特殊字符。
var isValidString = "AhU29yCXdtoaNyQ8rhUBZMz0MieMNBTUaaA04hO+pGzd/iK01sQx6ckMi8LqCdyphShlBt9QhLtCizcUsy708eU90GD7Qg==";
var encoded = encodeURIComponent(isValidString);
// then append the encoded one to the url instead of the original string
答案 2 :(得分:0)
我非常确定,如果您使用HttpParams而不是自己组装字符串,Angular会为您完成编码工作。像这样
let str = "adam+eve"
let params = new HttpParams().set("isValidString", str);
return this.http.get("http://foo.bar", {params}) as Observable<Any>
应该会导致呼叫