问题:http.post()
返回
错误:java.net.MalformedURLException:找不到协议: ZoneAwareError的192.168.1.14:8080/newuser
代码(user.service.ts):
import { Injectable } from "@angular/core";
import { Http, Headers, Response } from "@angular/http";
import { Observable } from "rxjs/Rx";
import "rxjs/add/operator/do";
import "rxjs/add/operator/map";
import { User } from "./user";
import { Config } from "../config";
@Injectable()
export class UserService {
constructor(private http: Http) {}
register(user: User) {
let headers = new Headers();
headers.append("Content-Type", "application/json");
return this.http.post(
"192.168.1.14:8080/newuser",
JSON.stringify({
username: user.email,
password: user.password
}),
{ headers: headers }
)
.catch(this.handleErrors);
}
handleErrors(error: Response) {
console.log(JSON.stringify(error.json()));
return Observable.throw(error);
}
}

通过杂货教程(第3章:服务),我无法访问用户的后端API,因此我使用NodeJS
(在我的网络上托管OPi)编写了自己的api。我可以使用我的dev comp发布,我可以从模拟器的浏览器访问GET
请求,但是当我尝试发布IP:端口时,我得到MalformedURLException
。
如何发布到此网址?我能找到的所有Nativescript http.post()
示例都使用基于DNS的URL;甚至可以做基于IP的请求吗?
答案 0 :(得分:1)
是的,可以使用基于IP的请求。
但是,您需要提供http://
前缀,并且在使用模拟器时,您应该考虑环回地址与开发计算机上的不同
使用Android AVD时,环回地址为10.0.2.2
(对于GenyMotio,环回不同),而在iOS上,环回为localhost
。因此,如果您想使用本地IP地址,则需要考虑这一点。
e.g。 here