RaceAPI.java
@FormUrlEncoded
@POST("/Service1.svc/GetData1")
void GetData1(@Field("title") List<String> m, Callback<String> cb);
这是我发布数据的方式
RestAdapter adapter = new RestAdapter.Builder()
.setEndpoint("http://10.0.1.12:54253/")
.build();
final RaceAPI race= adapter.create(RaceAPI.class);
race.PostData(Arrays.asList("foo", "bar"), new Callback<String>() {
@Override
public void success(String s, Response response) {
}
@Override
public void failure(RetrofitError error) {
int a;
a=1;
}
});
这是我的WCF服务签名
[OperationContract]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "/PostData")]
String PostData(List<String> m);
但我在改装回调失败()
上在Android上收到此错误retrofit.RetrofitError:400 Bad Request
非常感谢任何帮助!
答案 0 :(得分:0)
事实上,我在改装界面上做了一些改变。
在接口中为方法声明添加了Headers属性。
@Headers("Content-Type:application/json")
@POST("/Service1.svc/PostData")
void PostData(@Body SpeechModel m, Callback<SpeechModel> cb);
我使数据传递绑定到接口的主体。(我删除了@FormUrlEncoded)
我制作了自定义类来从服务器发送和检索。我无法发送字符串或字符串数组(可能有些东西。找不到它。)
SpeechModel m = new SpeechModel();
m.setSpeechId(5);
m.setSpeechText("something");
race.PostData(m, new Callback<SpeechModel>() {
@Override
public void success(SpeechModel PostDataResult, Response response) {
}
@Override
public void failure(RetrofitError error) {
int a;
a=1;
}
});
WCF服务签名,更改了参数类型和返回类型。
[OperationContract]
[WebInvoke(Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle= WebMessageBodyStyle.Wrapped,
UriTemplate = "/PostData")]
SpeechModel PostData(SpeechModel m);