无法从 Retrofit 获得 JSON 结果(来自 WCF)
Cannot reach JSON Result (coming from WCF) from Retrofit
刚开始使用Retrofit,但有一些疑惑。我无法避免一些错误,这些错误不允许我调试我的应用程序。抱歉打扰大家了
嗯,这是您可能需要了解的代码部分。
如你所见,Gradle,Interface(用于休息),PojoClass(带有 class 和父级 class,这是第一个列表),以及 activity (我在onCreate中调用改造,我在onResponse中恢复数据)
--Graddle--
compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.google.code.gson:gson:2.5'
compile 'com.squareup.retrofit2:converter-gson:2.0.0'
--Pojo--
public class pisoAlquiler {
private int codigo;
private String fotos;
}
public class pisosAlquiler {
List<pisoAlquiler> pisoAlquilerList;
}
--Interface--
public interface RestApi {
@GET("/Service1.svc?wsdl")
Call<pisosAlquiler> devolverPisosA();
}
--Activity--
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alquiler);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://localhost:52896")
.addConverterFactory(GsonConverterFactory.create())
.build();
// prepare call in Retrofit 2.0
RestApi restApi = retrofit.create(RestApi.class);
Call<pisosAlquiler> call = restApi.devolverPisosA();
//asynchronous call
call.enqueue(this);
}
@Override
public void onResponse(Call<pisoAlquiler> call, Response<pisoAlquiler> response) {
setProgressBarIndeterminateVisibility(false);
// Create a LinearLayout element
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
pisosAlquiler prueba = (pisosAlquiler) response.body().pisoAlquilerList;
}
我收到两个错误,可能来自同一个问题。
在onCreate中:
call.enqueue(this);
this returns 错误说 in Call cannot be applied,如果我使用 pisoAlquiler Class,而不是pisosAlquiler(包含 pisoAlquiler 列表)的错误消失了。
在onResponse中:
pisosAlquiler prueba = (pisosAlquiler) response.body().pisoAlquilerList;
pisoAlquilerList returns 无法解析符号。看起来我可以调用 pisoAlquiler 的属性,但不是 pisosAlquiler 拥有的唯一属性...
有什么想法吗?
谢谢朋友们。
嗯,
问题是我处于调试模式和 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 防火墙。
刚开始使用Retrofit,但有一些疑惑。我无法避免一些错误,这些错误不允许我调试我的应用程序。抱歉打扰大家了
嗯,这是您可能需要了解的代码部分。
如你所见,Gradle,Interface(用于休息),PojoClass(带有 class 和父级 class,这是第一个列表),以及 activity (我在onCreate中调用改造,我在onResponse中恢复数据)
--Graddle--
compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.google.code.gson:gson:2.5'
compile 'com.squareup.retrofit2:converter-gson:2.0.0'
--Pojo--
public class pisoAlquiler {
private int codigo;
private String fotos;
}
public class pisosAlquiler {
List<pisoAlquiler> pisoAlquilerList;
}
--Interface--
public interface RestApi {
@GET("/Service1.svc?wsdl")
Call<pisosAlquiler> devolverPisosA();
}
--Activity--
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alquiler);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://localhost:52896")
.addConverterFactory(GsonConverterFactory.create())
.build();
// prepare call in Retrofit 2.0
RestApi restApi = retrofit.create(RestApi.class);
Call<pisosAlquiler> call = restApi.devolverPisosA();
//asynchronous call
call.enqueue(this);
}
@Override
public void onResponse(Call<pisoAlquiler> call, Response<pisoAlquiler> response) {
setProgressBarIndeterminateVisibility(false);
// Create a LinearLayout element
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
pisosAlquiler prueba = (pisosAlquiler) response.body().pisoAlquilerList;
}
我收到两个错误,可能来自同一个问题。
在onCreate中:
call.enqueue(this);
this returns 错误说 in Call cannot be applied,如果我使用 pisoAlquiler Class,而不是pisosAlquiler(包含 pisoAlquiler 列表)的错误消失了。
在onResponse中:
pisosAlquiler prueba = (pisosAlquiler) response.body().pisoAlquilerList;
pisoAlquilerList returns 无法解析符号。看起来我可以调用 pisoAlquiler 的属性,但不是 pisosAlquiler 拥有的唯一属性...
有什么想法吗?
谢谢朋友们。
嗯,
问题是我处于调试模式和 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 防火墙。