Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.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
Java Android将变量发布到drupal_Java_Android_Iphone_Cocoa - Fatal编程技术网

Java Android将变量发布到drupal

Java Android将变量发布到drupal,java,android,iphone,cocoa,Java,Android,Iphone,Cocoa,嗨,我正在为iOS和Android编写一个应用程序,与druapl站点进行接口。我正在尝试允许用户登录到该网站,然后将成功登录的数据保存到应用程序的首选项中。下面,我能够成功地在Cocoa中实现我想要的功能,但我无法让它在Java中工作。下面是两个代码片段。非常感谢您对java的任何帮助 我只是没有从java中得到任何响应——响应返回为空字符串,而它应该是一个长JSON响应 可可登录(工作) Java登录(不工作) 类登录任务扩展异步任务{ HttpResponse响应; 公共登录任务(){ }

嗨,我正在为iOS和Android编写一个应用程序,与druapl站点进行接口。我正在尝试允许用户登录到该网站,然后将成功登录的数据保存到应用程序的首选项中。下面,我能够成功地在Cocoa中实现我想要的功能,但我无法让它在Java中工作。下面是两个代码片段。非常感谢您对java的任何帮助

我只是没有从java中得到任何响应——响应返回为空字符串,而它应该是一个长JSON响应

可可登录(工作)

Java登录(不工作)

类登录任务扩展异步任务{
HttpResponse响应;
公共登录任务(){
}
@凌驾
受保护的Void doInBackground(Void…arg0){
HttpClient=new DefaultHttpClient();
HttpPost=新的HttpPost(“http://examplesite/api/rest/user/login");
试一试{
post.setHeader(“接受”、“应用程序/json”);
post.setHeader(“内容类型”、“应用程序/x-www-form-urlencoded”);
List formparams=new ArrayList();
添加(新的BasicNameValuePair(“用户名”、“管理员”);
添加(新的BasicNameValuePair(“密码”、“密码”));
post.setEntity(新的UrlEncodedFormEntity(formparams));
响应=client.execute(post);
}捕获(客户端协议例外e){
}捕获(IOE异常){
}
返回null;
}
@凌驾
受保护的void onPostExecute(未使用的void){
//要完成活动吗
试一试{
Toast.makeText(Login.this,EntityUtils.toString(response.getEntity(),“UTF-8”),Toast.LENGTH\u SHORT.show();
}捕获(解析异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}       
}

查看您列出的示例,您没有在iOS和Android上提交相同的负载

在iOS上,您正确地使用
username=foo&password=bar发布表单数据
,但在android上,您要求的是
JSONObject
的字符串表示形式,即
{'username':'foo','password':'bar'}


与使用JSONObject不同,您应该签出,尤其是
格式
方法。Drupal iOS sdk和dandy for android

它怎么不起作用?您遇到了哪些错误?你能发布stacktrace吗?我不熟悉Cocoa,但看起来你在Cocoa中的请求中发送了一个字符串“username=user&password=pass”,您的请求中有一个JSON对象,使用Java。我将其编辑为我认为现在应该是的样子,但它仍然无法在我的项目上运行安装的drupal ios sdk,并且已经成功登录到更好的解决方案中。谢谢您在完成ios应用程序的调整后再试一次
NSURL *url = [NSURL URLWithString:@"http://examplesite/api/rest/user/login"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
NSData *requestBody = [[NSString stringWithFormat:@"username=%@&password=%@",[userField text],[passField text]] dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:requestBody];
NSURLResponse *response = NULL;
NSError *requestError = NULL;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&requestError];
NSString *responseString = [[[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding] autorelease];
class loginTask extends AsyncTask<Void, Void, Void> {   
    HttpResponse response;
    public loginTask() {

    }

    @Override
    protected Void doInBackground(Void... arg0) {
        HttpClient client = new DefaultHttpClient();  
        HttpPost post = new HttpPost("http://examplesite/api/rest/user/login");
        try {
            post.setHeader("Accept", "application/json");
            post.setHeader("Content-Type", "application/x-www-form-urlencoded");
            List<NameValuePair> formparams = new ArrayList<NameValuePair>();
            formparams.add(new BasicNameValuePair("username", "admin"));
            formparams.add(new BasicNameValuePair("password", "password"));
            post.setEntity(new UrlEncodedFormEntity (formparams));
            response = client.execute(post);  
        } catch (ClientProtocolException e) {

        } catch (IOException e) {

        }
        return null;
    }
    @Override 
    protected void onPostExecute(Void unused) {
        //TODO finish the activity
        try {
            Toast.makeText(Login.this, EntityUtils.toString(response.getEntity(), "UTF-8"), Toast.LENGTH_SHORT).show();
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }       
}