ようやくWebサービスに接続できましたが、
いいえ、logcat のデータを読み取ることができます
その後、必要に応じてjsonを分割しました:
(編集前のコードはこちら)
しかし、私がうまくいかないのは次のとおりです。
(編集前のコードはこちら)
oncreate クラスで変数 bedrijfsnaam を使用できないようです
私の完全なコード: パッケージ com.example.deceunincktechniekers;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import java.io.*;
import java.util.LinkedList;
import java.util.List;
import org.apache.http.client.*;
import org.apache.http.*;
import org.json.JSONException;
import org.json.JSONObject;
public class BTWcontrole extends Activity
{
TextView btwuitvoer;
EditText landcode;
EditText nummer;
Button verstuur;
String land;
String num;
String antwoord;
Context btwcontrolecontext;
String jsonData;
private String bedrijfsnaam = new String();
String zoekurl = "http://www.softnaert.be/SNWebservices/SNWeb.wso/checkVat/JSON";
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.btwcontrole);
btwcontrolecontext = this;
btwuitvoer = (TextView) findViewById(R.id.resultaat);
verstuur = (Button) findViewById(R.id.controleer);
landcode = (EditText) findViewById(R.id.landcode);
nummer = (EditText) findViewById(R.id.btwnr);
verstuur.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v) {
btwopvragen loaderTask = new btwopvragen();
loaderTask.execute();
land = landcode.getText().toString();
num = nummer.getText().toString();
Log.i("bedrijfsnaam in onclick", bedrijfsnaam);
btwuitvoer.setText(bedrijfsnaam);
}
});};
private class btwopvragen extends AsyncTask<Void, Void, Void>{
ProgressDialog dialog;
@Override
protected void onPreExecute() {
dialog = new ProgressDialog(btwcontrolecontext);
dialog.setTitle("btwnummer ophalen");
dialog.show();
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
// toegevoegde code om parameters aan de code toe te voegen
if(!zoekurl.endsWith("?")){
zoekurl += "?";
};
List<NameValuePair> parameters = new LinkedList<NameValuePair>();
parameters.add(new BasicNameValuePair("llcountryCode", String.valueOf(land)));
parameters.add(new BasicNameValuePair("llvatNumber", String.valueOf(num)));
String parameterString = URLEncodedUtils.format(parameters, "utf-8");
// effectieve http request met de parameters toegevoegd
HttpClient client = new DefaultHttpClient();
HttpGet aanvraag = new HttpGet(zoekurl + parameterString);
// foutanalyse van de http request
try
{
HttpResponse antwoord = client.execute(aanvraag);
StatusLine statuslijn = antwoord.getStatusLine();
int statuscode = statuslijn.getStatusCode();
if(statuscode != 200){
return null;
}
InputStream jsonStream = antwoord.getEntity().getContent();
BufferedReader reader= new BufferedReader(new InputStreamReader(jsonStream));
StringBuilder builder = new StringBuilder();
String lijn;
while((lijn = reader.readLine())!= null){
builder.append(lijn);
}
jsonData = builder.toString();
// met de volgende lijn is de data zichtbaar in de logcat
Log.i("btw geretourneerde data", jsonData);
// hier beginnen we met de json data te ontmantelen
JSONObject json = new JSONObject(jsonData);
String bedrijfsnaam = json.getString("sCompanyName");
Log.i("bedrijfsnaam in asynctask", bedrijfsnaam);
}
catch (ClientProtocolException e){
e.printStackTrace();
}
catch (IOException e){
e.printStackTrace();
}
catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
Log.i("bedrijfsnaam in onpostexecute", bedrijfsnaam);
dialog.dismiss();
super.onPostExecute(result);
}
}
}