无法在本地访问 WCF
Can´t reach WCF in local
在遵循一些 tuto 之后,我编写了这段代码,但它不起作用。当我调用包含 Retrofit 的 activity 时,应用程序崩溃了(当我添加用于创建 Retrofit 对象的代码时发生)....
我正在尝试使用 WCF (URL=http://192.168.0.156:52896/Service1.svc) (method´s name=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 正在调用(并开始一个新的 activity)第二个 activity(启动改造),但我从来没有达到它。第二个 activity returns 到 main_activity 立即不做任何事情(改造的东西)...
谢谢队友...
已编辑:
问题(我猜)可能是我对端点的定义。当我使用 baseUrl 设置改造并获得...我的 WCF 看起来像 http://192.168.0.156:52896/Service1.svc 并且我想调用的方法是 devolverPisosA,但我不知道如何设置改造以使用它。
刚刚尝试
baseUrl = http://192.168.0.156:52896/Service1.svc/
@GET("devolverPisosA")
嗯,
问题是我处于调试模式和 WCF(Visual Studio)并且 Android Studio 未在同一网络中配置。
要配置 Visual Studio 以便在本地网络中使用 Android Studio,请执行以下操作:
Web.Config 必须设置为从不同的地方收听。在服务和行为标签之间:
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
打开applicationhost.config分配在工程文件夹-->Config:改下一个:
<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 防火墙。
在遵循一些 tuto 之后,我编写了这段代码,但它不起作用。当我调用包含 Retrofit 的 activity 时,应用程序崩溃了(当我添加用于创建 Retrofit 对象的代码时发生).... 我正在尝试使用 WCF (URL=http://192.168.0.156:52896/Service1.svc) (method´s name=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 正在调用(并开始一个新的 activity)第二个 activity(启动改造),但我从来没有达到它。第二个 activity returns 到 main_activity 立即不做任何事情(改造的东西)...
谢谢队友...
已编辑: 问题(我猜)可能是我对端点的定义。当我使用 baseUrl 设置改造并获得...我的 WCF 看起来像 http://192.168.0.156:52896/Service1.svc 并且我想调用的方法是 devolverPisosA,但我不知道如何设置改造以使用它。
刚刚尝试
baseUrl = http://192.168.0.156:52896/Service1.svc/ @GET("devolverPisosA")
嗯,
问题是我处于调试模式和 WCF(Visual Studio)并且 Android Studio 未在同一网络中配置。
要配置 Visual Studio 以便在本地网络中使用 Android Studio,请执行以下操作:
Web.Config 必须设置为从不同的地方收听。在服务和行为标签之间:
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
打开applicationhost.config分配在工程文件夹-->Config:改下一个:
<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 防火墙。