我有一个React Native应用程序,只需要登录并随后使用返回的access_token获取数据。我试图通过连接到localHost上运行的本地托管的.NET API来调试错误:50968。返回
TypeError: Network request failed
我已经在manifext.xml中启用了互联网权限。 大多数谷歌搜索一直在说我需要将localHost:50968更改为我的IP地址。到目前为止,这是最接近使用'192.168.0.2:50968/token但是以下是响应。
{ type: 'default',
status: 400,
ok: false,
statusText: undefined,
headers: { map: { 'content-length': [ '334'
],
connection: [ 'close'
],
date: [ 'Thu,
10 Aug201703: 19: 14 GMT'
],
server: [ 'Microsoft-HTTPAPI/2.0'
],
'content-type': [ 'text/html; charset=us-ascii'
]
}
}, url: 'http: //192.168.0.2:50968/token',
_bodyInit:
'<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">\r\n
<HTML>
<HEAD>
<TITLE>Bad Request</TITLE>\r\n
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii">
</HEAD>\r\n
<BODY>
<h2>Bad Request - Invalid Hostname</h2>\r\n
<hr>
<p>HTTP Error 400. The request hostname is invalid.</p>\r\n
</BODY>
</HTML>\r\n', _bodyText: '
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd"> \r\n
<HTML>
<HEAD>
<TITLE>Bad Request
</TITLE>\r\n
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii">
</HEAD>\r\n
<BODY>
<h2>Bad Request - Invalid Hostname</h2>\r\n
<hr>
<p>HTTP Error 400. The request hostname is invalid.</p>\r\n
</BODY>
</HTML>\r\n'}
我在Visual Studio中有一个等待请求的断点,但我不能为我的生活让这个工作。 我的获取代码如下。
我试过这些作为URL_LOGIN并且都不起作用。 'http://localHost:50968/token'; 'http://192.168.0.2:50968/token';
fetch(URL_LOGIN, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
//application/x-www-form-urlencoded
},
body: data
}).then((response) => {
var jsonResponse = JSON.parse(response._bodyInit);
try {
AsyncStorage.setItem('token', jsonResponse.access_token);
loginUserSuccess(dispatch, response)
} catch (error) {
console.log(`Error while saving to Async Storage ${error.message}`)
loginUserFailed(dispatch, error)
}
}).catch(response => {
loginUserFailed(dispatch, response)
});
任何帮助都会非常感激。
答案 0 :(得分:2)
结束发现这个。以防其他人有这个问题。
我找到的最佳方法实际上是使用此
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
拯救了我的背后。
答案 1 :(得分:0)
使用10.0.2.2
代替localhost
http://10.0.2.2:50968/token
在android localhost上映射到模拟器而不是你的机器。
希望这有帮助
答案 2 :(得分:0)
在您发布的回复中,我注意到它显示url: 'http: //192.168.0.2:50968/token'
,http:
和//
之间有空格。您确定自己没有在URL_LOGIN