当前位置: 首页 > 知识库问答 >
问题:

Android HttpURLConnection POST没有数据被发送

江宏深
2023-03-14

我正在localhost上运行ASP.netJSON服务。我正在从Android应用程序向服务器发送JSON POST请求。服务器正在接收连接,但没有POST数据(我通过设置断点来确认这一点,断点在我从Android应用程序发布后命中)。我得到的HttpURLConnection响应代码是200 OK。但是,服务器没有收到数据。我不确定是否正在发送任何数据。我的android代码是(包裹在AsyncTask中):

public void makeHttpRequest(String verb, String serverAddr, String postBody)
    {
        HttpURLConnection urlConnection = null;
        OutputStream out = null;
        try {
            serverAddr = "http://10.0.2.2:4617/parent/dummy";
            URL url = new URL(serverAddr);
            urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setDoOutput(true);
            urlConnection.setChunkedStreamingMode(0);
            urlConnection.setRequestProperty("Transfer-Encoding","chunked");
            urlConnection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");

            urlConnection.connect();

            out = new BufferedOutputStream(urlConnection.getOutputStream());
            out.write(postBody.getBytes("UTF-8"));

            int responseCode = urlConnection.getResponseCode();
            System.out.println("HTTP Response Code: " + responseCode + " | " + urlConnection.getResponseMessage());
        }
        catch (MalformedURLException mal) {
            //
        }
        catch (IOException ioe) {
            //
        }
        finally {
            if (out != null) {
                try {
                    out.close();
                } catch(IOException e) {

                }
            }

            if (urlConnection != null)
                urlConnection.disconnect();
        }

    }

该C#/ASP.NET服务契约。实例的家长是空的,但应包含数据发送的POST:

[ServiceContract]
    public interface IRestServiceParent
    {

        [WebInvoke(UriTemplate = "{dummy}", Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        Parent PostParent(string dummy, Parent instance);
    }

public Parent PostParent(string dummy, Parent instance)
        {
            var result = MasterStorageStore.Instance.PostParent(instance);
            if (result == null) return emptyParent;

            return NewCopy(result);
        }

共有2个答案

凤衡
2023-03-14

我通过一个简单的PHP脚本发现,由于某种原因,尽管设置了< code > setRequestMode(" POST ")和< code>setDoOuput(true),但< code>HttpURLConnection是作为< code>GET而不是< code>POST发送的。我不知道为什么。

公冶京
2023-03-14

也许你应该尝试添加一个< code > out . flush();在< code > out . write(postbody . getbytes(" UTF-8 "))之后;。

 类似资料:
  • 我正在学习Java,正在使用java 8,spring 5.3.9和Apache Tomcat 9。我已经将我的jar文件添加到我的构建路径中的类路径中,将Apache Tomcat添加到我的服务器中,我的项目运行得非常好。现在我开始使用beans和xml文件,我遇到了一个问题。我的代码的一部分被触发,另一部分被忽略。 我有以下界面 FortuneService.java: 和一个快乐财富服务类:

  • 问题内容: 此代码 在我的标记中 这是完整的ajax请求: 即使gif显示为旋转,也永远不会触发警报“开始”。AjaxStop如预期那样被触发。有什么想法吗? 问题答案: 之所以不会被触发,是因为直到ajax请求执行完 之后 (直到被调用时为止) , 您的处理程序才被注册。在被注册后为好,但 之前 的请求完成,所以当它回来就迷上了运行。 要解决此问题,请 在 首次致电 之前 将其移动: 更新:从j

  • 在正确配置日志保留期后,kafka主题数据不会在windows中被删除。 以下错误记录在Kafka服务器日志中。 原因:java.nio.file.文件系统异常: \tmp\kafka-logs\TopicName-2\0000000000000007262.log - 计划任务“Kafka日志保留”(Kafka.utils.Kafka调度程序)中未捕获的异常

  • 我使用with Spring(Maven)参考本指南构建了一个RESTful Web服务,它工作得很好: https://spring.io/guides/gs/rest-service/ 现在我想用Docker在容器中启动这个,我正在解决这个问题。请参见下面我的DockerFile: 我检查了文件,它是空的。我不知道这里是否需要设置什么。 我怎样才能纠正这个?

  • 编辑:我正在使用并且在我的node.js文件中有。