小编kaf*_*ein的帖子

如何在Playframework 2/Scala中使用WS API使用空体请求发布http帖子?

我尝试使用Play2/Scala WS API向服务端点发送HTTP POST请求.由于HTTP POST正文中没有要发送的参数,我该如何使用它发送

WS.url("http://service/endpoint).post()
Run Code Online (Sandbox Code Playgroud)

我试过post()没有争论,但它给了我一个错误.

无法将单元实例写入HTTP响应.尝试定义可写[单位]

你能帮忙吗?

提前致谢...

rest web-services scala http-post playframework-2.0

19
推荐指数
2
解决办法
4962
查看次数

如果使用webview进行身份验证,如何使用Intent过滤器处理OAuth URL回调?

我正在开发一个使用OAuth进行身份验证的应用,但我在处理OAuth回调时遇到了一些问题.

认证

我的应用程序有一个webview作为登录屏幕,我有一个URL来加载我的webview中的身份验证表单.让我们说网址是:

https://myoauthhost.com/oauth/auth?response_type=code&client_id=XXXXXXX&redirect_uri=YYYYYYYY&scope=ZZZZZZZZZZ
Run Code Online (Sandbox Code Playgroud)

在auth活动(AuthActivity.java)中,我有以下内容:

    String authURL = https://myoauthhost.com/oauth/auth?response_type=code&client_id=XXXXXXX&redirect_uri=YYYYYYYY&scope=ZZZZZZZZZZ
    myWebView.loadUrl(authURL);
Run Code Online (Sandbox Code Playgroud)

在manifest.xml中,我有以下oauth回调处理:

<activity
            android:name=".AuthActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data
                    android:host="authprovider"
                    android:scheme="auth" />
            </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

问题

在webview中使用此url(使用loadURL()方法)会重定向到另一个包含REAL OAUTH WEB FROM的 URL (应该在webview中加载).问题是此重定向会自动启动Android中的意图选择:由于URL应由Web浏览器处理,因此Android允许您选择手机上可用的Web浏览器之一来打开该URL.

由于这不是我想要的,我必须包含以下代码,以便在webview中处理重定向但不启动Web浏览器(或其他):

myWebView.setWebViewClient(new WebViewClient());
Run Code Online (Sandbox Code Playgroud)

因此,使用此代码,重定向将在"webview"中处理,并显示登录屏幕.

然后我可以输入凭证(例如:通过Twitter的oauth),但是当完成身份验证时,会收到回叫,但之后应该处理应该处理回调的活动(配置为接收清单中的回调的AuthActivity).相反,我让webview显示一条消息,说明无法找到url回调(在我们的例子中:authprovider:// auth/XXX?xxx = yyy,如清单中所配置).

原因可能是以下代码:

myWebView.setWebViewClient(new WebViewClient());
Run Code Online (Sandbox Code Playgroud)

之前介绍的,告诉Android webview处理所有事情.所以现在,由于回调网址不是网址,因此无法处理它,甚至无法启动可以处理它的意图.

问题

我怎么解决这个问题 ?我应该能够让活动处理回调,但不要让webview尝试加载它.

任何帮助,将不胜感激

提前致谢

authentication android callback webview oauth-2.0

17
推荐指数
2
解决办法
1万
查看次数

如何管理从调用Play2!-Scala REST服务的本机移动应用程序发送的用户请求的身份验证/授权

我一直在深入研究Play2!Scala文档,关于为用户请求实现身份验证/授权的可能方法,我必须说我有点迷失.我想了解更多有关如何通过Play2!Scala支持的REST服务对移动设备发送的请求进行身份验证/授权的信息.

首先,Play2/scala似乎有很多auth-modules:例如t2v的Play20-auth.但问题是,这些解决方案基于在客户端存储cookie.是对的吗 ?这在纯粹的Web透视图中是有意义的:请求从浏览器发送,服务器可以在客户端上存储cookie等.

现在,如果我有一个原生移动应用程序(在IOS或Android上),我只是调用由Play2!Scala应用程序支持的REST服务.在这种情况下,我没有使用浏览器,因此服务器无法在客户端应用程序上存储cookie.

我还可以使用像t2v的Play20-auth这样模块进行授权/认证吗?

处理这类事情的最佳做法是什么?

任何帮助真的很感激,提前谢谢,

authentication android scala playframework-2.0

10
推荐指数
1
解决办法
6060
查看次数

Intellij-idea 12 Scala支持:它消耗了近300%的cpu资源

我最近购买了最新版本的Intellij创意(在75%的折扣期间),顺便说一句,这真的很棒.

我有一个问题:scala支持似乎被打破了.我已经使用SBT插件安装了scala支持插件.我还安装了Play!2框架支持插件,但是只要我在IDE中打开一个scala文件,就会占用我cpu资源的近300%,我无法弄清楚如何解决这个问题.

有没有人在他们的IDE上遇到过这个问题?

ide scala osx-leopard intellij-idea playframework-2.0

10
推荐指数
1
解决办法
2187
查看次数

如何在ActionBarSherlock导航微调器中包装文本内容

我正在尝试包装ActionBar导航微调器的文本内容(我正在使用ActionBar Sherlock).似乎我的微调器占用了下拉列表中包含的项目的宽度.

如何使微调器中的选定项目根据其宽度"包裹"?可以在GMaps动作条旋转器中找到一个示例.

android spinner android-layout android-spinner actionbarsherlock

9
推荐指数
1
解决办法
1895
查看次数

如何在Play中管理与数据库相关的异常!2.0/Scala使用Anorm

我目前正在玩Play 2.0(Scala).我必须承认这很有趣.我有一个与数据库操作异常有关的问题.

假设我将Car作为一个域类,并且我对其中一个字段有一个完整性约束,让我们说模型,以便在db中我不能有两(2)行具有相同的模型名称:

case class Car(id: Pk[Long], name: String, model: String)
Run Code Online (Sandbox Code Playgroud)

我试图在数据库中插入一条记录,如下所示:

def create(car: Car): Option[Long] = {
    DB.withConnection { implicit connection =>
      try {
          SQL("insert into cars (name, model) values ({name},{model}").on("name" -> car.name, "model" -> car.model).executeInsert()
      } catch {
          case e: Exception => {
          Logger.debug(e.getMessage())
          None
      } 
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我没有像前面的代码那样捕获异常,那么当我从我的控制器调用此方法时,模型中的数据已经存在于数据库中,我抛出以下异常:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'Enzo' for key 'model'
Run Code Online (Sandbox Code Playgroud)

有没有办法捕获MySQLIntegrityConstraintViolationException而不是Exception,以便我可以对可能出错的地方进行细粒度控制,然后为我的用户提供更简洁的反馈(例如在浏览器或移动设备上)?

这是处理与数据库相关的操作和异常的最佳方法,还是每个人都使用的最佳实践?

提前致谢,

scala-2.8 playframework anorm playframework-2.0

6
推荐指数
1
解决办法
2479
查看次数

Clojure 的 SSE(服务器发送事件)客户端库?

我想在 Clojure 中处理服务器发送的事件流。有谁知道一个小型客户端库可以做到这一点吗?

我期待找到类似https://github.com/stalefruits/gniazdo 的东西,它适用于Websockets,但适用于SSE

我找不到任何东西,并且不再维护可能是一个很好的候选人的唯一库https://github.com/clojurewerkz/ssese

提前致谢 ...

client clojure server-sent-events

5
推荐指数
1
解决办法
603
查看次数

如果用户先前已授权访问,如何绕过Spring安全OAuth2中的访问确认步骤?

我目前正试图绕过Spring Security OAuth2中访问授权过程的批准/拒绝步骤,因为应该记住先前授权的访问(针对特定的client_id和user_id)并允许将OAuth应用程序重定向到客户端应用程序没有每次询问用户他的批准.

    <version.spring-security>3.2.0.RELEASE</version.spring-security>
    <version.spring-security-oauth>1.0.5.RELEASE</version.spring-security-oauth>
Run Code Online (Sandbox Code Playgroud)

所以我有一个AccessConfirmationController,它具有/ oauth/confirm_access端点的映射:

    @RequestMapping("/oauth/confirm_access")
    public ModelAndView getAccessConfirmation(@ModelAttribute final AuthorizationRequest clientAuth)
    {
        final ClientDetails client = this.clientDetailsService.loadClientByClientId(clientAuth.getClientId());
        final TreeMap<String, Object> model = Maps.newTreeMap();
        model.put("auth_request", clientAuth);
        model.put("client", client);
        return new ModelAndView("access_confirmation", model);
    }
Run Code Online (Sandbox Code Playgroud)

非常经典的处理访问确认方式.

现在我知道我必须检查(在此方法的某处)当前经过身份验证的用户(Principal)是否先前已批准访问权限,如果是,我们应该只检索用户关联的令牌,并且可能只是通过redirect_uri向他发送令牌.

Spring Security中有一个允许令牌检索的内部端点:

    @FrameworkEndpoint
    @RequestMapping(value = "/oauth/token")
    public class TokenEndpoint extends AbstractEndpoint {

        @RequestMapping
        public ResponseEntity<OAuth2AccessToken> getAccessToken(Principal principal,
                @RequestParam(value = "grant_type", required = false) String grantType,
                @RequestParam Map<String, String> parameters) {
       // the logic here
        }
    }
Run Code Online (Sandbox Code Playgroud)

如何从我的控制器中调用此框架端点?它甚至是最好的方式(〜最佳实践?)吗?

提前致谢,

spring spring-mvc spring-security spring-security-oauth2

4
推荐指数
1
解决办法
4735
查看次数

如何配置Element-collection以映射JPA orm.xml配置中的现有DB表?

我已经将一个应用程序从完整的Hibernate功能迁移到基于JPA/Hibernate的应用程序,我的JPA映射存在问题.

我们设法使用orm.xml来映射我们的实体.一切都很好,直到我不得不处理元素集合.实际上,我有一个名为User的实体,它有一个嵌入式地图(地图集合称为首选项).所以我们有类似的东西:

public class User {
        private Long id;
        private Map<String, String> preferences;
}
Run Code Online (Sandbox Code Playgroud)

在我们的完全休眠版本中,会生成PREFERENCE(ID,name,value)表.但是当我们尝试将其迁移到JPA时,我们使用了以下映射:

<element-collection name="preferences" target-class="java.lang.String" fetch="LAZY">
       <map-key-class class="java.lang.String" />
       <map-key-column name="[name]" />
       <column name="[value]" />
       <collection-table name="PREFERENCE">
           <join-column name="ID" />
       </collection-table>
</element-collection>
Run Code Online (Sandbox Code Playgroud)

并生成一个新的User_Preferences表.即使我在xml配置中指定了name ='PREFERENCES'属性,我也无法将元素集合指向现有的表PREFERENCES.

你有过这种情况吗?真的很感激任何帮助.

非常感谢guyz,

mapping collections orm hibernate jpa-2.0

3
推荐指数
1
解决办法
9102
查看次数

Scala:为什么我不能用占位符正确过滤我的Int List?例如:myList.filter(_:Int => _%5 == 0)

我在Scala中有一个与占位符语法相关的问题.所以我有一个简单的数字列表:

myList = List(13, 24, 10, 35)
Run Code Online (Sandbox Code Playgroud)

首先,我试着像这样过滤这个列表

myList.filter(_ => (_ % 5) == 0)
Run Code Online (Sandbox Code Playgroud)

并且编译器抱怨因为它无法推断参数类型:

error: missing parameter type for expanded function ((x$2) => x$2.$percent(5))
Run Code Online (Sandbox Code Playgroud)

好吧,没问题:我为参数添加了一个类型

myList.filter(_:Int => _ % 5 == 0)
Run Code Online (Sandbox Code Playgroud)

现在编译器给了我这个:

identifier expected but integer literal found.
       someNumbers.filter(_:Int => _ % 5 == 0)
                                       ^
Run Code Online (Sandbox Code Playgroud)

你们知道为什么我有这个奇怪的错误吗?我真的不明白......

提前致谢,

scala type-inference placeholder scala-collections

3
推荐指数
2
解决办法
687
查看次数

Xtify注册​​如何运作?

我目前正在我的项目上实现推送通知功能.我设法使用xtify这样做,因为它是与Google的C2DM服务交互的好包装.

现在,正如大多数人可能知道的那样:xtify使用名为xid的标识符进行通信并将通知推送给用户.所以在我的主要活动中(用户打开应用程序时显示的第一个),我有以下代码:

    XtifySDK.start(getApplicationContext(), Constants.XTIFY_APP_KEY,
        Constants.C2DM_SENDER_ID);
    String xid = XtifySDK.getXidKey(getApplicationContext());
    if (!"".equals(xid) && xid != null) {
      App.setXid(xid);
    }
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:

  • xid是否永久连接到设备?或者是否可以更改/撤销它?
  • 我应该将它存储在数据库中(使用用户信息)吗?并在每次用户连接时检查他/她是否已经有相关的xid,如果没有,请致电

    String xid = XtifySDK.getXidKey(getApplicationContext());

生成一个新的? - 有没有办法让Android模拟器获取通知?

先谢谢你们,

android push-notification android-emulator android-c2dm xtify

2
推荐指数
1
解决办法
1768
查看次数

使用#()代替(fn ...)in(sorted-map-by ...)

我想将以下代码段中的内部函数调用转换为使用#()宏的内部函数调用:

(let [m {:a 3, :b 2, :c 4, :x 9, :y 0, :z 5}]
  (into (sorted-map-by (fn [key1 key2]
                         (compare [(get m key2)]
                                  [(get m key1)]))) m))
Run Code Online (Sandbox Code Playgroud)

我对如何实现这一点感到有点困惑.

clojure anonymous-function

2
推荐指数
1
解决办法
84
查看次数