Android 호출 웹 서비스--[WJ]
본 고 는 주로 안 드 로 이 드 가 웹 서 비 스 를 어떻게 호출 하여 개발 하 는 지,그리고 제 가 필요 로 하 는 UI 구성 요 소 를 소개 합 니 다.미흡 하 게 쓴 점 양해 부탁드립니다~
요약 은 다음 과 같다.
저 는 후기 에 페이지 의 레이아웃 을 조정 하려 고 합 니 다.여러분 마음대로 하 세 요~
이제 본 격 적 으로 시작 하 겠 습 니 다.
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.