我是Android开发的新手,并试图通过改造库调用android中的本地.NET web api服务。在IIS上启动我的web api后,我收到此错误无法连接到localhost / 127.0.0.1 android。
当我做了与建议http://themakeinfo.com/2015/04/retrofit-android-tutorial/相同的事情时,它工作正常,但我的localhost服务没有从android调用
我的服务网址是, http://localhost:52511/api/Values/getAllStudents/5
它也在浏览器中以XML格式输出。
我也尝试用它来调用,
public interface gitapi {
@GET("/api/Values/GetProduct/{id}") //here is the other url part.best way is to start using /
public void getFeed(@Path("id") int id, Callback<gitmodel> response);
}
public class gitmodel {
public int studentId;
public String studentName;
public String studentAddress;
}
String API = "http://10.0.2.2:52511";
public void CallService(View view){
RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint(API).build();
gitapi git = restAdapter.create(gitapi.class);
int id = 5;
git.getFeed(id, new Callback<gitmodel>() {
@Override
public void success(gitmodel gitmodel, Response response) {
Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_LONG).show();
}
@Override
public void failure(RetrofitError error) {
Toast.makeText(getApplicationContext(), "Errors", Toast.LENGTH_LONG).show();
}
});
}
但没有运气。
请告诉我在哪里需要更改以使其正常工作。 ?
我在浏览器中收到的响应是,
<ArrayOfstudents xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/APICall.Controllers">
<students>
<studentAddress>valsad</studentAddress>
<studentId>1</studentId>
<studentName>Keval</studentName>
</students>
<students>
<studentAddress>Hyderabad</studentAddress>
<studentId>2</studentId>
<studentName>Honey</studentName>
</students>
</ArrayOfstudents>
答案 0 :(得分:3)
在您的情况下,与改造库没有任何关系。
这是关于您的网络设置, 您的手机和IIS服务器必须是同一个LAN。
您可以按照以下方式进行操作。
有时您需要关闭IIS服务器上的安全防火墙。
答案 1 :(得分:1)
我遇到与您相同的问题( 无法连接到localhost / 127.0.0.1 )。 首先,我建议你阅读: android developer's guide(图片的主要部分↓)
我拥有所有这些,意思是A,B和C.作为C(模拟器),我使用了Genymotion。 我通过更改网络配置解决了我的问题。
重要提示:我在baseURL中的地址是:&#34; localhost:8099 / &#34;
让我们看看: 您应该点击设置→网络→选中使用HTTP代理→输入您的IP地址和端口(在我的情况下是8099)→关闭。查看有关图像的更多详细信息↓
答案 2 :(得分:0)
您可以在androidmanifest.xml
android:usesCleartextTraffic="true"
答案 3 :(得分:0)
使用本地IP代替127.0.0.1:<PORT>
答案 4 :(得分:0)
实际上这有助于在同一 Android 设备 (Android 9) 上使用 2 个应用
android:usesCleartextTraffic="true"