经过几次tuto之后,我编写了这段代码,但是没有用。当我调用包含Retrofit的活动时,应用程序崩溃了(当我添加用于创建Retrofit对象的代码时会发生这种情况).... 我正在尝试使用WCF(网址 = http://192.168.0.156:52896/Service1.svc)(方法名称 = devolverPisosA())
-- Interface --
public interface RestApi {
@GET("/devolverPisosA")
Call<List<pisoAlquiler>> devolverPisosA();
}
-- Pojo Class --
public class pisoAlquiler {
private int codigo;
private String fotos;
// GET AND SET INCLUDED...
}
-- Activity --
public class Alquiler extends AppCompatActivity implements Callback<List<pisoAlquiler>> {
public static final String BASE_URL = "http://192.168.0.156:52896/Service1.svc";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alquiler);
// CREATE CLIENT SERVICE
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
// prepare call in Retrofit 2.0
RestApi restApi = retrofit.create(RestApi.class);
Call<List<pisoAlquiler>> call = restApi.devolverPisosA();
//asynchronous call
call.enqueue(this);
}
@Override
public void onResponse(Call<List<pisoAlquiler>> call, Response<List<pisoAlquiler>> response) {
setProgressBarIndeterminateVisibility(false);
responsePisosAlquiler = (ArrayList<pisoAlquiler>) response.body();
}
@Override
public void onFailure(Call<List<pisoAlquiler>> call, Throwable t) {
Toast.makeText(Alquiler.this, t.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
}
所以我的main_activity正在调用(并开始一个新的活动)第二个活动(启动改造),但我从来没有达到它。第二个活动立即返回main_activity而不做任何事情(改造的东西)......
谢谢Mates ......
EDITED: 问题(我猜)可能是我对端点的定义。当我使用baseUrl设置改造并获取...我的WCF看起来像 http://192.168.0.156:52896/Service1.svc 而我要调用的方法是 devolverPisosA ,但我不知道我知道如何设置改装以供消费。
试试
baseUrl = http://192.168.0.156:52896/Service1.svc/ @GET( “ devolverPisosA ”)
答案 0 :(得分:0)
那么,
问题是我在Debbug模式和WCF(由Visual Studio)和Android Studio未在同一网络中配置。
要配置Visual Studio以在本地网络中使用Android Studio,请执行以下操作:
必须设置Web.Config 以便从不同的地方收听。在服务和行为标签之间:
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
打开在项目文件夹中分配的 applicationhost.config - &gt;配置:更改下一个:
<site name="Proyect" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="c:\ProjectFolder\Proyect />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:52896:localhost" />
</bindings>
</site>
有关:
<site name="Proyect" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="c:\ProjectFolder\Proyect" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:52896:localhost" />
<binding protocol="http" bindingInformation="*:52896:*" />
</bindings>
</site>
有了这个,我们可以听取内部请求。
打开该端口的Windows防火墙。