Java Android向webservice发送post数据

Java Android向webservice发送post数据,java,android,web-services,https,Java,Android,Web Services,Https,嗨,我正在尝试向Web服务发送数据 字符串url=“” Hit1命中,但在下一行失败,未命中hit2。我做错了什么 我的日志 10-18 09:17:33.302: D/gralloc_goldfish(2228): Emulator without GPU emulation detected. 10-18 09:17:33.322: W/TextLayoutCache(2228): computeValuesWithHarfbuzz -- need to force to single ru

嗨,我正在尝试向Web服务发送数据

字符串url=“”

Hit1命中,但在下一行失败,未命中hit2。我做错了什么

我的日志

10-18 09:17:33.302: D/gralloc_goldfish(2228): Emulator without GPU emulation detected.
10-18 09:17:33.322: W/TextLayoutCache(2228): computeValuesWithHarfbuzz -- need to force to single run
10-18 09:17:37.862: I/test(2228): hit1
10-18 09:17:37.872: D/AndroidRuntime(2228): Shutting down VM
10-18 09:17:37.872: W/dalvikvm(2228): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
10-18 09:17:37.912: E/AndroidRuntime(2228): FATAL EXCEPTION: main
10-18 09:17:37.912: E/AndroidRuntime(2228): java.lang.IllegalStateException: Could not execute method of the activity
10-18 09:17:37.912: E/AndroidRuntime(2228):     at android.view.View$1.onClick(View.java:3039)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at android.view.View.performClick(View.java:3480)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at android.view.View$PerformClick.run(View.java:13983)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at android.os.Handler.handleCallback(Handler.java:605)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at android.os.Handler.dispatchMessage(Handler.java:92)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at android.os.Looper.loop(Looper.java:137)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at android.app.ActivityThread.main(ActivityThread.java:4340)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at java.lang.reflect.Method.invokeNative(Native Method)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at java.lang.reflect.Method.invoke(Method.java:511)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at dalvik.system.NativeStart.main(Native Method)
10-18 09:17:37.912: E/AndroidRuntime(2228): Caused by: java.lang.reflect.InvocationTargetException
10-18 09:17:37.912: E/AndroidRuntime(2228):     at java.lang.reflect.Method.invokeNative(Native Method)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at java.lang.reflect.Method.invoke(Method.java:511)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at android.view.View$1.onClick(View.java:3034)
10-18 09:17:37.912: E/AndroidRuntime(2228):     ... 11 more
10-18 09:17:37.912: E/AndroidRuntime(2228): Caused by: android.os.NetworkOnMainThreadException
10-18 09:17:37.912: E/AndroidRuntime(2228):     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1084)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at java.net.InetAddress.lookupHostByName(InetAddress.java:391)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at java.net.InetAddress.getAllByName(InetAddress.java:220)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at libcore.net.http.HttpConnection.<init>(HttpConnection.java:71)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:460)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:432)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:188)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at libcore.net.http.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:280)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at dk.example.epaypayment.EpayHttpRequest.MakePayment(EpayHttpRequest.java:53)
10-18 09:17:37.912: E/AndroidRuntime(2228):     at dk.example.epaypayment.MainActivity.sendMessage(MainActivity.java:37)
10-18 09:17:37.912: E/AndroidRuntime(2228):     ... 14 more
10-18 09:22:38.232: I/Process(2228): Sending signal. PID: 2228 SIG: 9
10-18 09:17:33.302:D/gralloc_金鱼(2228):未检测到GPU仿真的仿真器。
10-18 09:17:33.322:W/TextLayoutCache(2228):computeValuesWithHarfbuzz--需要强制单次运行
10-18 09:17:37.862:I/测试(2228):hit1
10-18 09:17:37.872:D/AndroidRuntime(2228):关闭虚拟机
10-18 09:17:37.872:W/dalvikvm(2228):threadid=1:线程以未捕获异常退出(组=0x409961f8)
10-18 09:17:37.912:E/AndroidRuntime(2228):致命异常:main
10-18 09:17:37.912:E/AndroidRuntime(2228):java.lang.IllegalStateException:无法执行活动的方法
10-18 09:17:37.912:E/AndroidRuntime(2228):在android.view.view$1.onClick(view.java:3039)
10-18 09:17:37.912:E/AndroidRuntime(2228):在android.view.view.performClick(view.java:3480)
10-18 09:17:37.912:E/AndroidRuntime(2228):在android.view.view$PerformClick.run(view.java:13983)
10-18 09:17:37.912:E/AndroidRuntime(2228):在android.os.Handler.handleCallback(Handler.java:605)上
10-18 09:17:37.912:E/AndroidRuntime(2228):位于android.os.Handler.dispatchMessage(Handler.java:92)
10-18 09:17:37.912:E/AndroidRuntime(2228):在android.os.Looper.loop(Looper.java:137)
10-18 09:17:37.912:E/AndroidRuntime(2228):位于android.app.ActivityThread.main(ActivityThread.java:4340)
10-18 09:17:37.912:E/AndroidRuntime(2228):位于java.lang.reflect.Method.Invokenactive(本机方法)
10-18 09:17:37.912:E/AndroidRuntime(2228):在java.lang.reflect.Method.invoke(Method.java:511)
10-18 09:17:37.912:E/AndroidRuntime(2228):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
10-18 09:17:37.912:E/AndroidRuntime(2228):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
10-18 09:17:37.912:E/AndroidRuntime(2228):在dalvik.system.NativeStart.main(本机方法)
10-18 09:17:37.912:E/AndroidRuntime(2228):由以下原因引起:java.lang.reflect.InvocationTargetException
10-18 09:17:37.912:E/AndroidRuntime(2228):位于java.lang.reflect.Method.Invokenactive(本机方法)
10-18 09:17:37.912:E/AndroidRuntime(2228):在java.lang.reflect.Method.invoke(Method.java:511)
10-18 09:17:37.912:E/AndroidRuntime(2228):在android.view.view$1.onClick(view.java:3034)
10-18 09:17:37.912:E/AndroidRuntime(2228):。。。还有11个
10-18 09:17:37.912:E/AndroidRuntime(2228):由以下原因引起:android.os.NetworkOnMainThreadException
10-18 09:17:37.912:E/AndroidRuntime(2228):在android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1084)
10-18 09:17:37.912:E/AndroidRuntime(2228):位于java.net.InetAddress.lookupHostByName(InetAddress.java:391)
10-18 09:17:37.912:E/AndroidRuntime(2228):位于java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
10-18 09:17:37.912:E/AndroidRuntime(2228):位于java.net.InetAddress.getAllByName(InetAddress.java:220)
10-18 09:17:37.912:E/AndroidRuntime(2228):在libcore.net.http.HttpConnection.(HttpConnection.java:71)
10-18 09:17:37.912:E/AndroidRuntime(2228):在libcore.net.http.HttpConnection.(HttpConnection.java:50)
10-18 09:17:37.912:E/AndroidRuntime(2228):在libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
10-18 09:17:37.912:E/AndroidRuntime(2228):位于libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
10-18 09:17:37.912:E/AndroidRuntime(2228):在libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
10-18 09:17:37.912:E/AndroidRuntime(2228):在libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
10-18 09:17:37.912:E/AndroidRuntime(2228):在libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:460)
10-18 09:17:37.912:E/AndroidRuntime(2228):在libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:432)
10-18 09:17:37.912:E/AndroidRuntime(2228):位于libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
10-18 09:17:37.912:E/AndroidRuntime(2228):位于libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
10-18 09:17:37.912:E/AndroidRuntime(2228):在libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
10-18 09:17:37.912:E/AndroidRuntime(2228):在libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:188)
10-18 09:17:37.912:E/AndroidRuntime(2228):在libcore.net.http.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:280)
10-18 09:17:37.912:E/AndroidRuntime(2228):在dk.example.epaypayment.epayhtprequest.MakePayment(epayhtprequest.java:53)
10-18 09:17:37.912:E/AndroidRuntime(2228):在dk.example.epaypayment.MainActivity.sendMessage(MainActivity.java:37)
10-18 09:17:37.912:E/AndroidRuntime(2228):。。。14多
10-18 09:22:38.232:I/进程(2228):发送信号。PID:2228信号:9

好吧,我可以建议使用HttpClient以更高的抽象度来完成

DefaultHttpClient httpClient = null;

HttpParams my_httpParams = new BasicHttpParams();

httpClient = new DefaultHttpClient(my_httpParams);
然后发送

HttpPost httpPost = new HttpPost(stringUri);
httpPost.setHeader("Content-type", "application/x-www-form-urlencoded");
httpPost.setHeader("charset", "utf-8");

if (!TextUtils.isEmpty(someStringToSend)) {
    httpPost.setEntity(new StringEntity(someStringToSend, HTTP.UTF_8));
}

HttpResponse responsePOST = httpClient.execute(httpPost);
HttpEntity resEntity = responsePOST.getEntity();

if (resEntity != null) {
    response = EntityUtils.toString(resEntity, HTTP.UTF_8);
}
我还没有测试它,但应该可以工作。

调用
sendpostrest(字符串用户名,字符串传递)
方法和参数。您可以从UI线程调用此方法,请求将从其他线程发送(
AsyncTask
已嵌入)

private void sendPostRequest(字符串givenUsername,字符串givenPassword){
类SendPostReqAsyncTask扩展了AsyncTask{
@凌驾
受保护的字符串doInBackground(字符串…参数){
字符串paramUsername=params[0];
字符串paramPassword=params[1];
System.out.println(“***doInBackground**paramUsername”
+paramUsername+“paramPassword:”+paramPassword);
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost-httpPos
HttpPost httpPost = new HttpPost(stringUri);
httpPost.setHeader("Content-type", "application/x-www-form-urlencoded");
httpPost.setHeader("charset", "utf-8");

if (!TextUtils.isEmpty(someStringToSend)) {
    httpPost.setEntity(new StringEntity(someStringToSend, HTTP.UTF_8));
}

HttpResponse responsePOST = httpClient.execute(httpPost);
HttpEntity resEntity = responsePOST.getEntity();

if (resEntity != null) {
    response = EntityUtils.toString(resEntity, HTTP.UTF_8);
}
private void sendPostRequest(String givenUsername, String givenPassword) {

    class SendPostReqAsyncTask extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... params) {
            String paramUsername = params[0];
            String paramPassword = params[1];

            System.out.println("*** doInBackground ** paramUsername "
                + paramUsername + " paramPassword :" + paramPassword);

            HttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(
                "http://lib-dm.process9.com/libertydm/ValidateUserHandler.ashx");// replace with your url
            httpPost.addHeader("Content-type",
                "application/x-www-form-urlencoded");
            BasicNameValuePair usernameBasicNameValuePair = new BasicNameValuePair(
                "UserId", paramUsername);  // Make your own key value pair
            BasicNameValuePair passwordBasicNameValuePAir = new BasicNameValuePair(
                "Password", paramPassword);// make your own key value pair

            // You can add more parameters like above

            List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
            nameValuePairList.add(usernameBasicNameValuePair);
            nameValuePairList.add(passwordBasicNameValuePair);

            try {
                UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(
                    nameValuePairList);
                httpPost.setEntity(urlEncodedFormEntity);

                try {
                    HttpResponse httpResponse = httpClient
                        .execute(httpPost);
                    InputStream inputStream = httpResponse.getEntity()
                        .getContent();
                    InputStreamReader inputStreamReader = new InputStreamReader(
                        inputStream);
                    BufferedReader bufferedReader = new BufferedReader(
                        inputStreamReader);
                    StringBuilder stringBuilder = new StringBuilder();
                    String bufferedStrChunk = null;
                    while ((bufferedStrChunk = bufferedReader.readLine()) != null) {
                        stringBuilder.append(bufferedStrChunk);
                    }

                    return stringBuilder.toString();

                    } catch (ClientProtocolException cpe) {
                        System.out
                            .println("First Exception coz of HttpResponese :"
                                + cpe);
                        cpe.printStackTrace();
                    } catch (IOException ioe) {
                        System.out
                            .println("Second Exception coz of HttpResponse :"
                                + ioe);
                        ioe.printStackTrace();
                    }

            } catch (UnsupportedEncodingException uee) {
                System.out
                    .println("An Exception given because of UrlEncodedFormEntity argument :"
                        + uee);
                uee.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
        }
    }

    SendPostReqAsyncTask sendPostReqAsyncTask = new SendPostReqAsyncTask();
    sendPostReqAsyncTask.execute(givenUsername, givenPassword);
}
   HttpClient client = new DefaultHttpClient();
    HttpResponse response;
    JSONObject json=new JSONObject();
    HttpPost post = new HttpPost(url1);

    try {
        json.put("Key","your value");
        json.put("Key", "Value");


        StringEntity stringEntity = new StringEntity(json.toString());

        stringEntity.setContentEncoding("UTF-8");
        stringEntity.setContentType("application/json");
        post.setEntity(stringEntity);

        response = client.execute(post);
        Log.e("RESPONSE", response.toString());
        String responseBody = EntityUtils
                .toString(response.getEntity());
         res= responseBody.toString();

        Log.e("RESPONSE BODY", responseBody);