1

リクエストが実行されない原因がわかりません。Android で WCF Restful サービスを呼び出そうとしましたが、「Request Error」というエラー メッセージが表示されます。この例を見ると、この例が機能しない理由がわかりません。下記参照:

.Net サービスは次のとおりです。

[ServiceContract]
    public interface ISampleService
    {
        [OperationContract]
        [WebInvoke(
            Method="POST", UriTemplate="/Login", BodyStyle= WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
        string Login(string value);
    }

public class SampleService : ISampleService
    {
        public string Login(string value)
        {
            string t = "";
            try
            {
                //foreach (string s in value)
                //{
                //    t = s;
                //}
                return t;
            }
            catch (Exception e)
            {
                return e.ToString();
            }
        }
    }

ジャワ:

package com.mitch.wcfwebserviceexample;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.protocol.HTTP;
import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONStringer;

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.TextView;
import android.app.Activity;

public class MainActivity extends Activity implements OnClickListener {
    private String values ="";
  Button btn;
  TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btn = (Button)this.findViewById(R.id.btnAccess);
        tv = (TextView)this.findViewById(R.id.tvAccess);
        btn.setOnClickListener(this);
    }

    @Override
    public void onClick(View arg0) {
        try
        {
        AsyncTaskExample task = new AsyncTaskExample(this);
        task.execute("");
        String  test = values;
        tv.setText(values);
        } catch(Exception e)
        {
           Log.e("Click Exception ", e.getMessage());   
        }

    }

    public class AsyncTaskExample extends AsyncTask<String, Void,String>
    {
        private String Result="";
        //private final static String SERVICE_URI = "http://10.0.2.2:8889";
        private final static String SERVICE_URI = "http://10.0.2.2:65031/SampleService.svc";
        private MainActivity host;
        public AsyncTaskExample(MainActivity host)
        {
            this.host = host;
        }

        public String GetSEssion(String URL)
        {
          boolean isValid = true;
          if(isValid)
          {

              HttpClient client = new DefaultHttpClient();
              HttpPost post = new HttpPost("http://10.0.2.2:65031/SampleService.svc/Login");
              try
              {
                List<NameValuePair> value = new ArrayList<NameValuePair>(1);
                value.add(new BasicNameValuePair("value", "123456"));
                post.setEntity(new UrlEncodedFormEntity(value));
                HttpResponse response = client.execute(post) ;
                BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
                String line ="";
                while((line = rd.readLine()) != null)
                {
                    System.out.println(line);
                }
              }catch(Exception e)
              {
                  Log.e("Error", e.getMessage());
              }
         }
          return Result;
        }

        @Override
        protected String doInBackground(String... arg0) {
            android.os.Debug.waitForDebugger();
            String t = GetSEssion(SERVICE_URI);
            return t;
        }

        @Override
        protected void onPostExecute(String result) {
        //  host.values = Result;
            super.onPostExecute(result);
        }
        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
        }

        @Override
        protected void onCancelled() {
            // TODO Auto-generated method stub
            super.onCancelled();
        }
    }
}
4

1 に答える 1