首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android利用KSOAP2调用现有的webservice有关问题

2012-04-14 
Android利用KSOAP2调用现有的webservice问题请问有谁做过吗?我在网上找了好多例子,但是转到自己的电脑上总

Android利用KSOAP2调用现有的webservice问题
请问有谁做过吗?我在网上找了好多例子,但是转到自己的电脑上总是有问题,实在搞不懂为什么,请教大家。。。

package webservice.weather;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.AndroidHttpTransport;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.method.LinkMovementMethod;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

public class WeatherActivity extends Activity {
private static String LOG_TAG = "Weather";
private static boolean DEBUG = false;
private static final int SHOW_ABOUT = 0x0001;
private static final String NAMESPACE = "http://WebXml.com.cn/";

private static String URL = "http://www.webxml.com.cn/webservices/weatherwebservice.asmx";
private static final String METHOD_NAME = "getWeatherbyCityName";
private static String SOAP_ACTION = "http://WebXml.com.cn/getWeatherbyCityName";

private String weatherToday;
private String weatherTomorrow;
private String weatherAfterday;
private String weatherCurrent;
private int iconToday[] = new int[2];
private int iconTomorrow[] = new int[2];
private int iconAfterday[] = new int[2];

private Button okButton;
private EditText textInput;
private ImageView imageView1;
private ImageView imageView2;
private TextView textWeatherToday;
private ImageView imageView3;
private ImageView imageView4;
private TextView textWeatherTomorrow;
private ImageView imageView5;
private ImageView imageView6;
private TextView textWeatherAfterday;
private TextView textWeatherCurrent;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

okButton = (Button) findViewById(R.id.WeatherSearch);
textInput = (EditText) findViewById(R.id.TextWeather);
imageView1 = (ImageView) findViewById(R.id.ImageView01);
imageView2 = (ImageView) findViewById(R.id.ImageView02);
textWeatherToday = (TextView) findViewById(R.id.WeatherToday);
imageView3 = (ImageView) findViewById(R.id.ImageView03);
imageView4 = (ImageView) findViewById(R.id.ImageView04);
textWeatherTomorrow = (TextView) findViewById(R.id.WeatherTomorrow);
imageView5 = (ImageView) findViewById(R.id.ImageView05);
imageView6 = (ImageView) findViewById(R.id.ImageView06);
textWeatherAfterday = (TextView) findViewById(R.id.WeatherAfterday);
textWeatherCurrent = (TextView) findViewById(R.id.WeatherCurrent);

okButton.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
showWeather();
}
});
}

private void showWeather() {
String city = textInput.getText().toString();
if (city.length() == 0)
city = "杭州";
getWeather(city);

textWeatherToday.setText(getWeatherToday());
imageView1.setImageResource(getIconToday(0));
imageView2.setImageResource(getIconToday(1));

textWeatherTomorrow.setText(getWeatherTomorrow());
imageView3.setImageResource(getIconTomorrow(0));
imageView4.setImageResource(getIconTomorrow(1));

textWeatherAfterday.setText(getWeatherAfterday());
imageView5.setImageResource(getIconAfterday(0));
imageView6.setImageResource(getIconAfterday(1));

textWeatherCurrent.setText(getWeatherCurrent());


}

public void getWeather(String cityName) {
try {
SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME);
rpc.addProperty("theCityName", cityName);

AndroidHttpTransport ht = new AndroidHttpTransport(URL);
ht.debug = true;

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);

envelope.bodyOut = rpc;
envelope.dotNet = true;
envelope.setOutputSoapObject(rpc);

ht.call(SOAP_ACTION, envelope);

debug(LOG_TAG, "DUMP>> " + ht.requestDump);
debug(LOG_TAG, "DUMP<< " + ht.responseDump);

SoapObject result = (SoapObject) envelope.bodyIn;
SoapObject detail = (SoapObject) result
.getProperty("getWeatherbyCityNameResult");

parseWeather(detail);
return;
} catch (Exception e) {
e.printStackTrace();
}
}

private void parseWeather(SoapObject detail) {
String date = detail.getProperty(6).toString();
weatherToday = "今天:" + date.split(" ")[0];
weatherToday = weatherToday + "\n天气:" + date.split(" ")[1];
weatherToday = weatherToday + "\n气温:"
+ detail.getProperty(5).toString();
weatherToday = weatherToday + "\n风力:"
+ detail.getProperty(7).toString() + "\n";
iconToday[0] = parseIcon(detail.getProperty(8).toString());
iconToday[1] = parseIcon(detail.getProperty(9).toString());

weatherCurrent = detail.getProperty(10).toString();

date = detail.getProperty(13).toString();
weatherTomorrow = "明天:" + date.split(" ")[0];
weatherTomorrow = weatherTomorrow + "\n天气:" + date.split(" ")[1];
weatherTomorrow = weatherTomorrow + "\n气温:"
+ detail.getProperty(12).toString();
weatherTomorrow = weatherTomorrow + "\n风力:"
+ detail.getProperty(14).toString() + "\n";
iconTomorrow[0] = parseIcon(detail.getProperty(15).toString());
iconTomorrow[1] = parseIcon(detail.getProperty(16).toString());

date = detail.getProperty(18).toString();
weatherAfterday = "后天:" + date.split(" ")[0];
weatherAfterday = weatherAfterday + "\n天气:" + date.split(" ")[1];
weatherAfterday = weatherAfterday + "\n气温:"
+ detail.getProperty(17).toString();
weatherAfterday = weatherAfterday + "\n风力:"
+ detail.getProperty(19).toString() + "\n";
iconAfterday[0] = parseIcon(detail.getProperty(20).toString());
iconAfterday[1] = parseIcon(detail.getProperty(21).toString());
}

public String getWeatherToday() {
debug(LOG_TAG, "weatherToday: " + weatherToday);
return weatherToday;
}

public String getWeatherTomorrow() {
debug(LOG_TAG, "weatherTomorrow: " + weatherTomorrow);
return weatherTomorrow;
}

public String getWeatherAfterday() {
debug(LOG_TAG, "weatherAfterday: " + weatherAfterday);
return weatherAfterday;
}

public String getWeatherCurrent() {
debug(LOG_TAG, "weatherCurrent: " + weatherCurrent);
return weatherCurrent;
}

public int getIconToday(int index) {
return iconToday[index];
}

public int getIconTomorrow(int index) {
return iconTomorrow[index];
}

public int getIconAfterday(int index) {
return iconAfterday[index];
}

private int parseIcon(String strIcon) {
if (strIcon == null)
return -1;

if ("0.gif".equals(strIcon))
return R.drawable.a_0;
if ("1.gif".equals(strIcon))
return R.drawable.a_1;
if ("2.gif".equals(strIcon))


return R.drawable.a_2;
if ("3.gif".equals(strIcon))
return R.drawable.a_3;
if ("4.gif".equals(strIcon))
return R.drawable.a_4;
if ("5.gif".equals(strIcon))
return R.drawable.a_5;
if ("6.gif".equals(strIcon))
return R.drawable.a_6;
if ("7.gif".equals(strIcon))
return R.drawable.a_7;
if ("8.gif".equals(strIcon))
return R.drawable.a_8;
if ("9.gif".equals(strIcon))
return R.drawable.a_9;
if ("10.gif".equals(strIcon))
return R.drawable.a_10;
if ("11.gif".equals(strIcon))
return R.drawable.a_11;
if ("12.gif".equals(strIcon))
return R.drawable.a_12;
if ("13.gif".equals(strIcon))
return R.drawable.a_13;
if ("14.gif".equals(strIcon))
return R.drawable.a_14;
if ("15.gif".equals(strIcon))
return R.drawable.a_15;
if ("16.gif".equals(strIcon))
return R.drawable.a_16;
if ("17.gif".equals(strIcon))
return R.drawable.a_17;
if ("18.gif".equals(strIcon))
return R.drawable.a_18;
if ("19.gif".equals(strIcon))
return R.drawable.a_19;
if ("20.gif".equals(strIcon))
return R.drawable.a_20;
if ("21.gif".equals(strIcon))
return R.drawable.a_21;
if ("22.gif".equals(strIcon))
return R.drawable.a_22;
if ("23.gif".equals(strIcon))
return R.drawable.a_23;
if ("24.gif".equals(strIcon))
return R.drawable.a_24;
if ("25.gif".equals(strIcon))
return R.drawable.a_25;
if ("26.gif".equals(strIcon))
return R.drawable.a_26;
if ("27.gif".equals(strIcon))
return R.drawable.a_27;
if ("28.gif".equals(strIcon))
return R.drawable.a_28;
if ("29.gif".equals(strIcon))
return R.drawable.a_29;
if ("30.gif".equals(strIcon))
return R.drawable.a_30;
if ("31.gif".equals(strIcon))
return R.drawable.a_31;

return 0;
}

private static void debug(String tag, String msg) {
if (DEBUG)
Log.d(tag, msg);
}

private void showAbout() {
TextView textAbout = new TextView(this);
textAbout.setText(R.string.about_text);
textAbout.setMovementMethod(LinkMovementMethod.getInstance());

Dialog dlg = new AlertDialog.Builder(this)
.setTitle(R.string.app_about)
.setView(textAbout)
.setPositiveButton(R.string.about_ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
}
}).create();
dlg.show();
}

public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, SHOW_ABOUT, 0, R.string.app_about);
return true;

}

public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case SHOW_ABOUT:
showAbout();
return true;
}
return false;
}
}

代码中的红色部分抛出异常,请问为什么啊?

[解决办法]
什么异常?
[解决办法]
最近到写这个,我觉得是你的包的问题

热点排行
Bad Request.