小编Mat*_*uno的帖子

Spring Security和Multipart请求

我有一个受Spring Security和OAuth2保护的@Controller,我试图让我的用户上传一个文件:

@Controller
@RequestMapping(value = "/api/image")
public class ImageController {

    @PreAuthorize("hasAuthority('ROLE_USER')")
    @RequestMapping(value = "/upload", method = RequestMethod.PUT)
    public @ResponseBody Account putImage(@RequestParam("title") String title, MultipartHttpServletRequest request, Principal principal){
        // Some type of file processing...
        System.out.println("-------------------------------------------");
        System.out.println("Test upload: " + title);
        System.out.println("Test upload: " + request.getFile("file").getOriginalFilename());
        System.out.println("-------------------------------------------");

        return ((Account) ((OAuth2Authentication) principal).getPrincipal());
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试上传文件和标题时,我得到以下异常.我将Content-Type标头设置为multipart/form-data.

java.lang.IllegalStateException: Current request is not of type [org.springframework.web.multipart.MultipartHttpServletRequest]: SecurityContextHolderAwareRequestWrapper[ FirewalledRequest[ org.apache.catalina.connector.RequestFacade@1aee75b7]]
    at org.springframework.web.servlet.mvc.method.annotation.ServletRequestMethodArgumentResolver.resolveArgument(ServletRequestMethodArgumentResolver.java:84)
    at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:75)
    at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:156)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:117)
Run Code Online (Sandbox Code Playgroud)

如何在Spring Security后面上传文件?似乎请求永远不会变成MultiPartHttpServerRequest,所以它不起作用?

如果我更改我的方法签名以获取@RequestParam MultipartFile,那么我会得到一个例外:

DEBUG DefaultListableBeanFactory - Returning cached …
Run Code Online (Sandbox Code Playgroud)

spring file-upload spring-security oauth-2.0

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

检测并处理需要登录的wifi

HttpClient在一个Android应用程序中使用4.1,并试图让我的应用程序的API请求被其中一个"你需要登录或支付wifi"屏幕拦截.

我想弹出一个允许用户登录的webview.

我一直试图拦截httpClient中的重定向,但我没有成功.

这就是我目前正在尝试的:

this.client = new DefaultHttpClient(connectionManager, params);

((DefaultHttpClient) this.client).setRedirectStrategy(new DefaultRedirectStrategy() {
    public boolean isRedirected(HttpRequest request, HttpResponse response, HttpContext context)  {
        boolean isRedirect = Boolean.FALSE;
        try {
            isRedirect = super.isRedirected(request, response, context);
        } catch (ProtocolException e) {
            Log.e(TAG, "Failed to run isRedirected", e);
        }
        if (!isRedirect) {
            int responseCode = response.getStatusLine().getStatusCode();
            if (responseCode == 301 || responseCode == 302) {
                throw new WifiLoginNeeded();
                // The "real implementation" should return true here..
            }
        } else {
            throw new …
Run Code Online (Sandbox Code Playgroud)

android httpclient wifi

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

通过屏幕旋转保持GridView的滚动位置

如何在整个屏幕重定向中保持GridView的滚动位置(它充满了搜索结果)?

我在片段中有GridView,当我旋转屏幕时,它会跳回到列表的顶部.

为了使它更加棘手,在横向模式下,我的GridView有3列..在纵向模式下它有2列.

我似乎无法弄清楚如何保持片段的GridView滚动到屏幕方向改变时应该接近的位置.

android gridview orientation

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

当应用更新时,Android设备上会发生什么?

Play商店更新应用时设备上的工作流程是什么?如果用户同时使用该应用程序会发生什么?

我问,因为我们遇到了一些无法找到String ID的崩溃,当我们查看APK时,两个版本中的String资源都可用 - 但崩溃中报告的十六进制ID可以在OLD apk中找到而不是在NEW一.这很奇怪.

这导致我们认为Play商店可能在应用程序运行时更新了应用程序的文件和资源,然后当它查找字符串资源以加载某些东西时,它使用了内存中的旧ID,当然也没有找到它在新更新的文件中..导致ResourceNotFound异常.

怎么可能?它甚至可能吗?我想不会,除了我们查看APK并且崩溃中的ID与旧资源ID匹配而不是我们刚刚推送的新ID.

android

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

适用于信用卡的inputType

我正在尝试设计一个接受信用卡号码的字段的输入类型.

我一直在使用inputType ="number" - 但这不会让拥有硬件键盘的人碰到空格键......当他们这样做时会跳转到活动中的另一个字段.

我想允许用户在他们想要的时候使用他们号码中的空格,或者至少是这样做,以便当我只允许数字时,如果硬件键盘用户占用空间,则不会留下信用额度卡号EditText.

理想情况下,我可以实现一些接口并拥有自己的自定义inputType,但我不确定是否可行.

  • 是否可以允许数字和空格,同时显示数字软键盘?

android

9
推荐指数
2
解决办法
3385
查看次数

无法将调试器连接到Jelly Bean Galaxy Nexus

我们有来自Google IO的Jelly Bean Galaxy Nexus,并安装了Android SDK的所有最新更新 - 但我们无法在Intellij IDEA的设备上使用USB调试.

我们将项目设置为使用4.1 SDK等编译.没有运气.有谁知道如何在新的Jelly Bean Galaxy Nexus上进行USB调试?

(编辑)这是在运行OS X 10.7.4的Mac上尝试的 - 所以理论上驱动程序应该不是问题吗?

debugging android android-4.2-jelly-bean

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

覆盖Crashlytics报告的android包名称

在亚马逊AppStore中,您可以分发Google Play风格的应用程序和为Fire Phone和Fire TV量身定制的应用程序.为了做到这一点,你生成了两个不同的二进制文件(它们实际上可能完全不同,应该完全被认为是两个不同的应用程序).

创建二进制文件后,您需要通过Amazon AppStore将它们分发到正确的设备.这就是问题所在 - 因为所有二进制文件都需要具有相同的包名称.

使用Crashlytics跟踪具有相同包名的两个不同应用的首选方法是什么?

我尝试使用此处的说明设置自定义程序包名称,以便向Crashlytics报告不同的程序包 - 但是,即使在强制执行多次崩溃并观察SDK上载报告后,自定义程序包名称也从未出现在Crashlytics中.

android amazon-appstore crashlytics

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

从帐户身份验证器accountPreferences屏幕启动Intent?

我已在我的应用程序中包含AccountManager代码,以使用户能够在其"设置"应用程序中创建和管理其帐户.

我在帐户验证器定义中的"accountPreferences"首选项文件中进行了链接,并且选项在"设置">"帐户">"我的应用程序"屏幕中正确显示.当我点击其中一个,而不是获取我链接的活动时,我得到:

01-14 14:47:27.304: ERROR/AndroidRuntime(27708): FATAL EXCEPTION: main
    android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
    at android.app.ContextImpl.startActivity(ContextImpl.java:944)
    at android.app.ContextImpl.startActivity(ContextImpl.java:931)
    at android.preference.Preference.performClick(Preference.java:967)
    at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:215)
Run Code Online (Sandbox Code Playgroud)

我在PreferenceScreen中的意图定义为:

<intent
    android:action="android.intent.action.VIEW"
    android:targetPackage="com.myapp.android"
    android:targetClass="com.myapp.android.activities.AccountForwardingActivity"/>
Run Code Online (Sandbox Code Playgroud)

并且目标活动也按照您的预期定义,除了intent-filter之外没有特殊标志来匹配该操作(我还列出了其他自定义操作).

<activity android:name=".activities.AccountForwardingActivity"
    android:theme="@style/Theme.MyApp"
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="com.myapp.android.PAYMENT_TYPES"/>
        <action android:name="com.myapp.android.ADDRESS_LIST"/>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?如何将从Settings.apk启动的此意图标记为新任务?

settings preferenceactivity android-preferences accountmanager

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

NMEA消息到Android位置

我正在使用外部GPS,因为它们更准确.我已经解决了蓝牙连接,但现在我陷入了大量的NMEA格式化消息.

看起来,因为你可以从内置的GPS堆栈中获取NMEA,所以必须有一种方法来获得给定NMEA消息的位置.

如何将我的NMEA消息转换为有用的Location对象?

gps android location nmea

0
推荐指数
1
解决办法
2779
查看次数