Android无法POST / api响应

时间:2015-05-30 18:45:19

标签: android http-post

我正在尝试在REST后端执行HTTP post请求。后端的URL使用SSL,因此我还添加了必要的代码来处理它。但我收到了以下回复:

  

无法POST / api

这是我的代码:

protected String doInBackground(String... args) {
                try {

                HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
                DefaultHttpClient client = new DefaultHttpClient();
                SchemeRegistry registry = new SchemeRegistry();
                SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
                socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
                registry.register(new Scheme("https", socketFactory, 443));
                SingleClientConnManager mgr = new SingleClientConnManager(client.getParams(), registry);
                DefaultHttpClient httpClient = new DefaultHttpClient(mgr, client.getParams());



                HttpPost post = new HttpPost("https://test-api.smart-trial.dk/api");
                List <NameValuePair> nvps = new ArrayList <NameValuePair>(2);
                nvps.add(new BasicNameValuePair("path[pathwayId]","5566e151817a62021b1ea809"));
                nvps.add(new BasicNameValuePair("formData[firstname]","Name"));
                nvps.add(new BasicNameValuePair("formData[lastname]","XXX"));
                nvps.add(new BasicNameValuePair("formData[email]","example@mail.com"));

                 post.addHeader("Referer" ,"https://myurl.com/api");
                 post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));


                //DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpResponse response = httpClient.execute(post);
                HttpEntity entity = response.getEntity();
                    if (entity != null) {
                        // get the response content as a string
                        String stringResponse = EntityUtils.toString(entity);

                        Log.d("Response", stringResponse);
                    }

代码中有什么问题吗?或者至少为什么我得到那个回应。

修改

我也有一些参数规则。

  

&#34;帖子应该使用x-www-form-urlencoded身体参数&#34;
  通过使用x-www-form-urlencoded的post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));,我或多或少地想到了这一点。

参数:

  1. pathwayId(应位于路径中)
  2. firstname(应位于formData中)
  3. 姓氏(应位于formData中)
  4. 电子邮件(应位于formData中)
  5. Referer(应位于标题中)

1 个答案:

答案 0 :(得分:1)

听起来您的服务器未配置为允许对该URL的POST请求。但是你需要一种方法来验证它。

如果您的浏览器还没有REST测试插件,请找一个允许您输入POST请求数据的插件,下载并安装它。

然后在浏览器插件中复制POST数据,提交请求并查看服务器的响应。

至少这可以帮助您确定问题是在应用程序中还是在服务器中。