我有一个应用程序调用Web服务来获取PNR状态。但我是创建网络服务的新手,所以我已经通过一些视频和示例来了解如何创建和使用Web服务。创建Web服务时遇到问题
我在stackoverflowhttps://stackoverflow.com/questions/14598485/need-indian-railway-apis-for-making-app-for-pnr-status-train-info-etc和这个问题中提供的所有链接,我得到这个:http://pnrapi.alagu.net/。
我的代码是:
XML:activity_status_pnr.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText android:id="@+id/et_pnr"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/h"
android:maxLength="10" />
<Button android:id="@+id/pnr_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/gstatus"
android:layout_gravity="center" />
</LinearLayout>
Java代码:StatusPNR.java
package com.example.infopnr;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import java.io.IOException;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
public class StatusPNR extends Activity {
String URL = "http://pnrapi.alagu.net/api/v1.0/pnr/UR_PNR_CODE";
String result = "";
//String deviceId = "xxxxx" ;
//final String tag = "Your Logcat tag: ";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_status_pnr);
final EditText txtSearch = (EditText)findViewById(R.id.et_pnr);
txtSearch.setOnClickListener(new EditText.OnClickListener()
{
public void onClick(View v){txtSearch.setText("");}
});
final Button btnSearch = (Button)findViewById(R.id.pnr_status);
btnSearch.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
String query = txtSearch.getText().toString();
PNRWebService(query);
}
});
}
private void PNRWebService(String q){
}
}
我还没有创建的Web服务方法尚未作为我在这里遇到了一些问题。在某些网站上,我读到应该使用Apache Web服务器来获取HTTP客户端。但是,我不确定,不知道为什么会这样?
我的问题是:
1)是他们的任何需要安装以获得web服务器或我们的编码是足以调用Web服务没有任何东西任何事先安装?
2)在PNRWebService()方法中,我需要做什么才能获得连接并使用URL调用服务?我知道我需要通过HTTPClient建立连接,但经过许多例子和视频之后,我并没有明白他们究竟是怎么做的?
3)http://pnrapi.alagu.net/与本网站的参考我想获得PNR状态?为了调用这个我需要做的事情,因为我不知道这个URL是什么,以及在获取URL之后还应该做些什么?
4)我从Apache导入了一些软件包,我不知道它是否值得?
如果任何人有良好的知识,请帮助他人,然后请让我知道如何执行。
谢谢帕尔!我已经实现了它,但我想问一下,我想调用ansynTask单击按钮,当我创建它像这样:final Button btnSearch =(Button)findViewById(R.id.pnr_status); btnSearch.setOnClickListener(新Button.OnClickListener(){ 公共无效的onClick(视图v){ \t \t新的AsyncTask(本).execute(URL); } }); – Saggy
它显示错误:构造函数StatusPNR.asyncTask(新View.OnClickListener(){})未定义....在这里我不能调用on-clickListener事件的构造函数作为上下文值在那里。对? – Saggy
我想不可以在OnClick Event上调用asyncTask,如果没有,那么程序将如何知道从他们需要获取PNR的位置以及点击他们需要启动过程的位置?我有点混乱。 – Saggy