2016-08-31 2 views
0

많은 페이지를 조사했지만 아무 것도 대답 할 수 없습니다. 여기WCF 서비스를 개조하여 게시하는 방법

@FormUrlEncoded 
@POST("/Service1.svc/GetData1") 
void GetData1(@Field("title") List<String> m, Callback<String> cb); 

이 내가 데이터를 게시하는 방법입니다 안드로이드

RaceAPI.java에 내 코드입니다

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); 

하지만, 에이 오류가 나타납니다. 추가 기능 콜백 실패()

retrofit.RetrofitError: 400 Bad Request

도움이 될만한 정보가 있습니까?

답변

0

사실 내가 개조 인터페이스의 일부 변경 사항과 함께 작동하게 만들었습니다.

인터페이스의 메서드 선언에 Headers 특성을 추가했습니다.

@Headers("Content-Type:application/json") 
@POST("/Service1.svc/PostData") 
void PostData(@Body SpeechModel m, Callback<SpeechModel> cb); 

는 I 데이터 인터페이스의 본체와 결합을 전달하도록 하였다. (난 @FormUrlEncoded 제거)

I 보내고 서버로부터 검색하도록 사용자 클래스를 만들었다. 내가 문자열 또는 문자열 배열로 보낼 수 없습니다 (someways가있을 수 있습니다. 그것을 찾을 수 없습니다.)

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); 
관련 문제