通过Android应用程序连接到WCF服务

时间:2013-12-09 19:10:57

标签: java android wcf web-services

好的,所以事情看起来这个问题已被问过几次,但遗憾的是它没有解决我的问题。

我的.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)

0 个答案:

没有答案
相关问题