好的,所以事情看起来这个问题已被问过几次,但遗憾的是它没有解决我的问题。
我的.Net应用程序中有一个WCF服务,它返回“Hello World”没什么好看的。
public class HelloWorld : IHelloWorld
{
public string ReturnVal()
{
return "Hello World";
}
}
我正在学习安卓,所以请和我一起,我有这个课程如下(我一直在关注这个http://vrsbrazil.wordpress.com/2013/02/07/calling-a-restful-web-service-from-an-android-application/)下面是我从上面的教程中实现的方法。
public class RequestTask extends AsyncTask<String, String, String>{
public String rarr;
@Override
protected String doInBackground(String... uri) {
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response;
String responseString = null;
try {
response = httpclient.execute(new HttpGet(uri[0]));
StatusLine statusLine = response.getStatusLine();
if(statusLine.getStatusCode() == HttpStatus.SC_OK){
ByteArrayOutputStream out = new ByteArrayOutputStream();
response.getEntity().writeTo(out);
out.close();
rarr = "Inside status";
//responseString = out.toString();
rarr = out.toString();
} else{
rarr = "first Error";
//Closes the connection.
response.getEntity().getContent().close();
throw new IOException(statusLine.getReasonPhrase());
}
} catch (ClientProtocolException e) {
rarr = "Second Error";
e.printStackTrace();
} catch (IOException e) {
rarr = "Third Error";
e.printStackTrace();
}
return rarr;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
//Do anything with response..
}
}
我将其称为如下
RequestTask task = (RequestTask) new RequestTask().execute("http://www.mycashadvance.co.uk/WCFService/HelloWorld");
然后我接受在RequestTask中声明的rarr字符串并将其分配给toast,但rarr的值总是为空,我希望Hello World。
Toast.makeText(MainActivity.this, task.rarr, Toast.LENGTH_SHORT).show();
我在清单
中添加了以下内容<uses-permission android:name="android.permission.INTERNET" />
如果任何一个人能够对此有所了解我会很感激,我也已经出来了,但是没有任何错误被抛出,rarr也没有设置任何其他我写在一边的值请求任务方法。
任何帮助都将不胜感激。
*更新*
根据Selvin的回应,我已经完成了这个
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
Toast.makeText(null, rarr, Toast.LENGTH_SHORT).show();
}
下面是我的stacktrace
12-09 14:39:09.274: E/AndroidRuntime(1613): FATAL EXCEPTION: main
12-09 14:39:09.274:E / AndroidRuntime(1613):进程:com.example.newapplication,PID:1613 12-09 14:39:09.274:E / AndroidRuntime(1613):java.lang.NullPointerException 12-09 14:39:09.274:E / AndroidRuntime(1613):在android.widget.Toast。(Toast.java:93) 12-09 14:39:09.274:E / AndroidRuntime(1613):在android.widget.Toast.makeText(Toast.java:241) 12-09 14:39:09.274:E / AndroidRuntime(1613):at Methods.RequestTask.onPostExecute(RequestTask.java:64) 12-09 14:39:09.274:E / AndroidRuntime(1613):at Methods.RequestTask.onPostExecute(RequestTask.java:1) 12-09 14:39:09.274:E / AndroidRuntime(1613):在android.os.AsyncTask.finish(AsyncTask.java:632) 12-09 14:39:09.274:E / AndroidRuntime(1613):在android.os.AsyncTask.access $ 600(AsyncTask.java:177) 12-09 14:39:09.274:E / AndroidRuntime(1613):在android.os.AsyncTask $ InternalHandler.handleMessage(AsyncTask.java:645) 12-09 14:39:09.274:E / AndroidRuntime(1613):在android.os.Handler.dispatchMessage(Handler.java:102) 12-09 14:39:09.274:E / AndroidRuntime(1613):在android.os.Looper.loop(Looper.java:137) 12-09 14:39:09.274:E / AndroidRuntime(1613):在android.app.ActivityThread.main(ActivityThread.java:4998) 12-09 14:39:09.274:E / AndroidRuntime(1613):at java.lang.reflect.Method.invokeNative(Native Method) 12-09 14:39:09.274:E / AndroidRuntime(1613):at java.lang.reflect.Method.invoke(Method.java:515) 12-09 14:39:09.274:E / AndroidRuntime(1613):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:777) 12-09 14:39:09.274:E / AndroidRuntime(1613):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 12-09 14:39:09.274:E / AndroidRuntime(1613):at dalvik.system.NativeStart.main(Native Method)