2011-11-03 4 views
0

우선, 지난 몇 달 동안 안드로이드 도움말을 위해 StackOverflow 및 모든 멤버에게 감사해야합니다. 내 학습 곡선이 가파르면서 나는 너의 도움 없이는 이걸 얻지 못했을거야.안드로이드 웹 서비스에서 비누 객체로 배열을 보내는 방법

웹 서비스에 비누 객체로 배열을 보내야하지만 서버에서 "비어있는 제출 된 ID 목록"응답을 계속 가져와야합니다. 나는 누군가가 왜 나에게 말할 수 있기를 바라고있다.

public void FeedbackRead(String feedbackID) { 
      String soapMethod = "feedbackRead"; 
      SoapObject request = new SoapObject(NAMESPACE, soapMethod); 
      request.addProperty(getProperty("patientLogin", PATIENT_LOGIN)); 
      request.addProperty(getProperty("passwd", PATIENT_PASS)); 
      request.addProperty(getProperty("IDsRead", new String[]{feedbackID})); 
      String res = doPost(request, soapMethod);   
      Log.i(soapMethod + "SOAP_RESPONSE ", res); 
    } 

그리고 서버에 보낼 수 있도록 PropertyInfo 방법은

private PropertyInfo getProperty(String name, String[] val) { 
     PropertyInfo info = new PropertyInfo(); 
     info.name = name; 
     info.namespace = NAMESPACE; 
     info.type = PropertyInfo.VECTOR_CLASS; 
     Vector<String> vct = new Vector<String>(); 
     for (int i = 0; i < val.length; i++) 
     vct.add(val[i]); 
     info.setValue(vct); 
     return info; 
    } 

가 정확히 어떻게 내가 요청 SoapObject에 문자열 배열을 추가해야합니다입니다 다음과 같이

내 코드입니다 ?

OK, 나는 logcat에 인쇄했기 때문에 soap objects 속성이 있어야한다는 것을 알고 있습니다. 나는 로그 캣에 따라 비누 개체 아래에 붙여입니다 : 내가 할

feedbackRead{patientLogin=patient1; passwd=pat1; IDsRead=[27d49cea-7968-457a-b377-7bd70bbca1a1, 27d49cea-7968-457a-b377-7bd70bbca1a2]; } 

다음 일은 가능성이 잘못 갈 수 무엇

String res = doPost(request, soapMethod); 

입니까?

Res에는 항상 다음 메시지가 포함되어 있습니다. empty submitted ID list!

내 브라우저 창에 붙여 넣을 수 있도록 변환 할 수있는 방법이 있습니까? 아니면 완전히 모호한 질문입니까?

감사합니다.

Elaine.

+0

getProperty 메서드를 연결하십시오. 배열을 보내려면 PropertyInfo 유형이 벡터이고 값이 벡터 여야합니다. – Flavio

+0

네, 내 PropertyInfo를 볼 수 있도록 위 게시물을 편집하고 있다고 생각합니다. 고마워, 일레인. –

답변

0

음 ... 뭔가 잘못되었을 수있는 곳이 많습니다. 난 당신의 코드를이 장소를 감지하고 디버깅하는 방법을 설명하려고합니다 :

  1. 귀하의 요청 및 응답을 로그인이 방법 :

    HttpTransportSE androidHttpTransport = new HttpTransportSE(serverUrl); 
        androidHttpTransport.debug = true; 
    
        androidHttpTransport.call(SOAP_ACTION, envelope); 
    
        Log.d("test", "request: " + androidHttpTransport.requestDump); 
        Log.d("test", "response: " + androidHttpTransport.responseDump); 
    
  2. 올바른 요청과 요청을 비교. 올바른 요청을 얻으려면 wsdl을 사용하여 비누 요청을 생성하는 도구가 필요할 수 있습니다 (저는 soapUI를 사용합니다, google it. 또한 이클립스 용 플러그인이 있습니다). 이러한 도구를 사용하면 서버에 올바른 요청을 보내고 서버의 방법이 작동하는지 여부를 확인할 수 있습니다.
  3. 그리고 ... 잘 모르겠어요하지만 벡터를 사용하여 순차적으로 배열 속성을 추가하지 않으려 :

    request.addProperty (getProperty에 ("IDsRead을", feedbackID1)); request.addProperty (getProperty ("IDsRead", feedbackID2))); request.addProperty (getProperty ("IDsRead", feedbackID3)));

희망이 있습니다. 행운을 빕니다!

관련 문제