Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android HTTP后编码_Android_Ruby On Rails 3.1_Http Headers_Http Post - Fatal编程技术网

Android HTTP后编码

Android HTTP后编码,android,ruby-on-rails-3.1,http-headers,http-post,Android,Ruby On Rails 3.1,Http Headers,Http Post,我想做的事 大家好 我尝试为我的服务器创建一个登录名,以便通过我的应用程序访问服务器上的数据。为此,我创建了一个名为“public void doLogin(最终字符串用户名,最终字符串密码)”的方法。在这个方法中,我启动一个线程,将用户名和密码发布到我的服务器。现在问题开始了。当我发帖子时,我的服务器无法处理我的帖子,如下所示:“username=“+username+”&password=“+password” 为了验证这是否是服务器端问题(事实上不是),我使用相同的参数在'curl-d'

我想做的事


大家好

我尝试为我的服务器创建一个登录名,以便通过我的应用程序访问服务器上的数据。为此,我创建了一个名为“public void doLogin(最终字符串用户名,最终字符串密码)”的方法。在这个方法中,我启动一个线程,将用户名和密码发布到我的服务器。现在问题开始了。当我发帖子时,我的服务器无法处理我的帖子,如下所示:
“username=“+username+”&password=“+password”

为了验证这是否是服务器端问题(事实上不是),我使用相同的参数在
'curl-d'
上发表了一篇文章,得到了一个没有任何问题的响应

供您参考,服务器在Ruby3上运行

问题


我需要如何将我的帖子更改到服务器,以便它能够处理我发送的数据。顺便说一句,我发布的字符串必须与下面的字符串完全相同:
“username=“+username+”&password=“+password//这意味着username=LEUSER&password=LEPASS”

请告诉我我需要更改什么,一些代码片段或教程会很好。在这里你可以找到多洛金方法的重要代码片段

代码




请指导我。您的代码看起来像是在发送html表单。事实上,如果使用
-d
选项,curl会向http头添加一个内容类型(值为
application/x-www-form-urlencoded

因此,请尝试添加如下标题字段:

HttpPost post = new HttpPost(URL);
post.addHeader("Content-Type","application/x-www-form-urlencoded");
...

您需要更改的是字符串实体部分。您应该更改以下内容:

ArrayList<NameValuePair> requestParameters = new ArrayList<NameValuePair>();    
requestParameters.add(new BasicNameValuePair("username", username));
requestParameters.add(new BasicNameValuePair("password", password));
ArrayList requestParameters=new ArrayList();
添加(新的BasicNameValuePair(“用户名”,username));
添加(新的BasicNameValuePair(“密码”,password));
用户名和密码是在程序中输入的变量


最后,如果您忘记设置权限,它也将不起作用。你需要设置android.permission.INTERNET

请仔细检查:如果我有一个rails应用程序作为测试服务器,我会使用JavaScript中的
$.post()
来测试它,然后检查帖子(标题和实体)使用Firebug或Chrome的调试工具。就像我说的,我得到响应并设置权限。可能主线程在doLogin函数之前完成。你可能需要加入他们。
ArrayList<NameValuePair> requestParameters = new ArrayList<NameValuePair>();    
requestParameters.add(new BasicNameValuePair("username", username));
requestParameters.add(new BasicNameValuePair("password", password));