无法从 Retrofit 获得 JSON 结果(来自 WCF)

Cannot reach JSON Result (coming from WCF) from Retrofit

刚开始使用Retrofit,但有一些疑惑。我无法避免一些错误,这些错误不允许我调试我的应用程序。抱歉打扰大家了

嗯,这是您可能需要了解的代码部分。

如你所见,GradleInterface(用于休息),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 防火墙。