Android 호출 웹 서비스--[WJ]

주의:
본 고 는 주로 안 드 로 이 드 가 웹 서 비 스 를 어떻게 호출 하여 개발 하 는 지,그리고 제 가 필요 로 하 는 UI 구성 요 소 를 소개 합 니 다.미흡 하 게 쓴 점 양해 부탁드립니다~
요약 은 다음 과 같다.
  • 환경:Android Studio 1.4 for Mac
  • 언어:내 가 틀 리 지 않 았 다 면 자바
  • 특징:간단 하고 직접적 이 며 폭력 적 이 며 쾌감 을 느 낄 수 있 습 니 다!!

  • 저 는 후기 에 페이지 의 레이아웃 을 조정 하려 고 합 니 다.여러분 마음대로 하 세 요~
    이제 본 격 적 으로 시작 하 겠 습 니 다.
    1.Webservice 인터페이스-query detail 방법
    querydetail
                        。
    SOAP 1.1    SOAP 1.2        。              。
    
    POST /testsdk/SDKService.asmx 
    HTTP/1.1Host: ***.***.***.*** 
    Content-Type: text/xml; charset=utf-8
    Content-Length: length
    SOAPAction: "http://microsoft.com/webservices/querydetail"
    
    
    
      
        
          string    
        
      
    
    
    HTTP/1.1 200 OK
    Content-Type: text/xml; charset=utf-8
    Content-Length: length
    
    
    
      
        
          string
        
      
    
    
    SOAP 1.2
        SOAP 1.2        。              。
    POST /testsdk/SDKService.asmx HTTP/1.1
    Host: ***.***.***.*** 
    Content-Type: application/soap+xml; charset=utf-8
    Content-Length: length
    
     
      
        
          string    
         
      
    
    
    HTTP/1.1 200 OK
    Content-Type: application/soap+xml; charset=utf-8
    Content-Length: length
    
    
    
       
          string
       
    
    
    

    간략하게 설명 하 다.
    우 리 는 Android 에서 웹 서비스 인 터 페 이 스 를 호출 하 는 데 다음 과 같이 필요 합 니 다.
    ServiceURL
    NameSpace
    MethodName
    SoapAction
    서버 주소
    http://microsoft.com/webservices/
    querydetail
    NameSpace+MethodName
    ServiceURL:서버 주소 입 니 다.웹 서 비 스 를 열 면 보 입 니 다.이 주소 에는 여러 가지 방법 이 있 습 니 다.Namespace:네 임 스페이스,이거 찾기 쉬 워 요.위 코드 블록 을 보 세 요.
    
        string    
    
    

    MethodName:방법 명"query detail"입 니 다.SoapAction:네 임 스페이스+방법 명 은 말 할 필요 가 없습니다.그것 을 찾 을 수 있 는 두 곳 이 있다.1.이 인터페이스 에 쓰 여 있 는 지 없 는 지 살 펴 보 세 요.있 으 면 아래 와 같 습 니 다.
    SOAPAction: "http://microsoft.com/webservices/querydetail"
    

    2.WDSL 문 서 를 보고 다음 스타일 을 찾 으 세 요.
    
      
        
      
        
        
      
        
    
    

    2.레이아웃 쓰기 시작
    2.1--홈 페이지
    activity_main.xml 이 레이아웃 은 여러분 이 아 쉬 운 대로 보 세 요.진지 하 게 생각 하지 마 세 요~
    
    
      
    
      

    2.2 -- listView内部布局

    item_ activity_main_list_view.xml

    
    
    
      
    
      
    
      
    
    
      
    
      
    
      
    
      
    
    
    

    간략하게 설명 하 다.
    이 xml 파일 은 사실 activitymain.xml 에서 listView 의 사용자 정의 레이아웃;아래 뷰 레이아웃 은 사실 분할 선 입 니 다.
      
    

    3.코드 쓰기 시작
    MainActivity.java
    public class MainActivity extends AppCompatActivity
    {    
        private EditText inputTextField;      //    
        private Button   queryButton;         //     
        private ListView resultLabel;         //      listView
    
        private List queryDetailModels = new ArrayList<>();    //     
    
        private ResulListViewAdapter resultListViewAdapter;                      //    
    
        final String serviceUrl = "http://***.***.***/testsdk/SDKService.asmx";  //      
        final String nameSpace = "http://microsoft.com/webservices/";            //     
        final String methodName = "querydetail";                                 //    
        final String soapAction = nameSpace + methodName;                        // SOAPACTION
    
        /***
        *      --     。。
        */
        private Handler mHandler = new Handler()
        {
          @Override
          public void handleMessage(Message msg) {
              resultListViewAdapter.notifyDataSetChanged();
          }
        };
    
        /***
        *      - viewDidLoad
        */
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);    //     
         
            setTitle("    ");
            initView();                                //      
            selectorMethod();                          //     
        }
    
        /***
        *      
        */
        private void initView()
        {
            inputTextField = (EditText) findViewById(R.id.inputTextField);
            queryButton = (Button) findViewById(R.id.queryButton);
            resultLabel = (ListView) findViewById(R.id.resultLabel);
    
            //             listView  
            resultListViewAdapter = new ResulListViewAdapter(MainActivity.this, queryDetailModels);
            resultLabel.setAdapter(resultListViewAdapter);
        }
    
    /***
        *     
        */
        private void selectorMethod()
        {
            queryButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String inputText = inputTextField.getText().toString().trim(); 
                    System.out.println("     :" + inputText);
            
                    //     
                    getDataSource(inputText);
                 }
            });
        }
    
    /***
        *     
        */
        private void getDataSource(String inputText)
        {
             SoapObject soapObject = new SoapObject(nameSpace, methodName);
             soapObject.addProperty("user", inputText);  // "user"       
    
             // new  webservice   SOAP    ,     ,   VER11
             final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
             envelope.bodyOut = soapObject;
             envelope.dotNet = true;
             envelope.setOutputSoapObject(soapObject);
    
             final HttpTransportSE httpTransportSE = new HttpTransportSE(serviceUrl);
    
             new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        httpTransportSE.call(soapAction, envelope);
                    } catch (IOException e) {
                        e.printStackTrace();
                    } catch (XmlPullParserException e) {
                        e.printStackTrace();
                    }
          
                 //        
                 SoapObject object = (SoapObject) envelope.bodyIn;
                 System.out.println("object    JSON " + object);
                 String jsonData = object.getProperty(0).toString();
                 System.out.println("JSON    :" + jsonData);
                 Log.d("xxxxxx",jsonData);
    
    
                 if (jsonData == null || jsonData.equals("anyType{}")) {
                        Log.d("success","12345678");
                 } else {
                        Type listType = new TypeToken>() {}.getType();
                        Gson gson = new Gson();
                        queryDetailModels.clear();
                        final LinkedList queryDetailModels = gson.fromJson(jsonData, listType);
    
                        for (QueryDetailModel queryDetailModel : queryDetailModels)
                        {
                            queryDetailModels.add(queryDetailModel);
                        }
                        //         listview
                        mHandler.sendEmptyMessage(0);
                    }
                }
            }).start();
        }
    }
    

    간략하게 설명 하 다.
    이러한 간단 한 웹 서비스 인 터 페 이 스 를 방문 하 는 주요 방법 은 이미 실현 되 었 습 니 다.충돌 에 있어 서 는 그렇지 않 을 것 입 니 다.있 으 면 메 시 지 를 남 겨 주세요.
    4.어댑터
    ResulListViewAdapter.java
    public class ResulListViewAdapter extends BaseAdapter 
    {   
         // 1.         
         private Context context;    
         private List queryDetailModels;    
    
        // 2.         
         public ListViewAdapter(Context context, List queryDetailModels) 
         {
              this.context = context;        
              this.queryDetailModels = queryDetailModels;    
         }
    
         //           
         @Override
         public int getCount()
         {
              return queryDetailModels.size();
         }
         //       , 0  
         @Override
         public QueryDetailModel getItem(int position)
         {
              return queryDetailModels.get(position);
         }
         //         
         @Override    
         public long getItemId(int position)
         {        
              return position;
         }    
         @Override    
         public View getView(int position, View convertView, ViewGroup parent) 
         {        
              //             
              System.out.println("getView ----" + position + "  " + convertView);        
              //   ,         ,               
              Holder holder;     
       
              if (convertView == null) {            
                      //          view            
                      convertView = LayoutInflater.from(context).inflate(R.layout.item_ activity_main_list_view, null);            
                      holder = new Holder();
                      holder.no_lb = (TextView)convertView.findViewById(R.id.no_lb);            
                      holder.name_lb = (TextView) convertView.findViewById(R.id.name_lb);
                      holder.gender_lb = (TextView) convertView.findViewById(R.id.gender_lb);            
    
                      convertView.setTag(holder);        
              } else {
                      holder = (Holder) convertView.getTag();
              }        
    
              QueryDetailModel item = getItem(position);  
              holder.no_lb.setText(item.getNo());
              holder.name_lb.setText(item.getName());
              holder.gender_lb.setText(item.getGender());
    
              return convertView;
          }
    
          //    ,                
          static class Holder
          {        
              TextView no_lb; 
              TextView name_lb;        
              TextView gender_lb;    
          }
    }
    

    간략하게 설명 하 다.
    어댑터 의 이 데모 에서 의 주요 역할 은 사용자 정의 listView 의 item 에 데 이 터 를 전송 하 는 것 입 니 다.구체 적 이 고 깊 은 것 은 인터넷 에서 찾 아 보 세 요.나 는 여기에 매우 낮 게 썼 다.
    5.실체 류
    QueryDetailModel.java
    public class QueryDetailModel
    {
        private String no;          //   
        private String name;        //    
        private String gender;      //   
    
        public String getNo() 
        {        
              return no;    
        }    
        public void setNo(String no) 
        {        
              this.no = no;    
        }    
        public String getName() 
        {        
              return name;    
        }    
        public void setName(String name) 
        {        
              this.name = name;    
        }    
        public String getGender() 
        {        
              return gender;    
        }    
        public void setGender(String gender) 
        {        
              this.gender = gender;    
        }
    

    간략하게 설명 하 다.
    획득 한 JSON 에 따라 관련 매개 변 수 를 적어 서 Setter&Getter 를 직접 사용 하면 됩 니 다.습관 에 따라.
    총결산
    제 가 쓴 것 을 좋아 하 시 길 바 랍 니 다.리 트 윗 하고 소장 하 는 것 을 좋아 하 시 길 바 랍 니 다.많 으 면 많 을 수록 좋 습 니 다.위의 모든 코드 는 제 것 을 복사 해서 붙 여 넣 었 습 니 다.어떤 유형 명,변수 명,매개 변수 명 은 모두 제 가 고 친 것 입 니 다.잘못 고 쳤 을 수도 있 습 니 다.하지만 저 는 세심 한 당신 이 반드시 발견 할 것 이 라 고 믿 습 니 다.
    마지막 으로 더 좋 은 것 이 있 으 면 저 에 게 답장 을 하고 자료 주 소 를 붙 여 주세요.개인 적 인 편지 가 있 습 니 다.WangJun 20161217

    좋은 웹페이지 즐겨찾기