小编Cap*_*sky的帖子

对4xx错误进行2次同步调用错误处理

我正在使用android-priority-jobqueue并且我使用改造来对我的rest api进行同步调用但是我不确定如何处理像401 Unauthorized错误这样的错误,我发回json说明错误.在进行异步调用时很简单,但我正在调整我的应用程序作为职位经理.下面是一个简单的尝试捕获IO异常,但401的422等?这该怎么做?

try {
    PostService postService = ServiceGenerator.createService(PostService.class);
    final Call<Post> call = postService.addPost(post);
    Post newPost = call.execute().body();

    // omitted code here

} catch (IOException e) {
    // handle error
}
Run Code Online (Sandbox Code Playgroud)

编辑

使用改装响应对象是我的关键,返回改装响应对象允许我

Response<Post> response = call.execute();

if (response.isSuccessful()) {
    // request successful (status code 200, 201)
    Post result = response.body();

    // publish the post added event
    EventBus.getDefault().post(new PostAddedEvent(result));
} else {
    // request not successful (like 400,401,403 etc and 5xx)
    renderApiError(response);
}
Run Code Online (Sandbox Code Playgroud)

error-handling android synchronous retrofit2

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

如何在方向改变后将碎片重新加载到后台堆叠中

我的Android应用程序具有一个Activity的注册流设置,我将这些步骤作为片段加载到活动布局中.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    tools:context="com.example.android.ui.RegisterActivity">

    <LinearLayout
        android:id="@+id/register_container"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"></LinearLayout>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

现在每个片段类实现在RegisterActivity中实现的公共接口,以便我知道加载下一步片段并将新片段添加到backstack

mFragmentTransaction.addToBackStack(mStepOne.TAG);
Run Code Online (Sandbox Code Playgroud)

现在一切正常,通过4个步骤,我可以导航回步骤,同时保留每个片段中的输入数据,如果它保持在相同的方向(portait)

但是一旦我改变方向,片段视图就会消失

如果我达到第3步,我仍然可以点击后退按钮,它将返回显示通过查看后端改变监听器而在那里的片段

mFragmentManager.addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
        @Override
        public void onBackStackChanged() {
            if(mFragmentManager.getBackStackEntryCount() > 0) {
                Log.d("BACK STACK", "TAG (name): " + mFragmentManager.getBackStackEntryAt( (mFragmentManager.getBackStackEntryCount() - 1)).getName());
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

保留片段的计数和标签,但不保留视图.RegisterActivity onCreateView将术语片段加载到视图中,当浏览步骤时,它仍然在视图中.

mFragmentManager = getSupportFragmentManager();
mFragmentTransaction = mFragmentManager.beginTransaction();
mTerms = new RegisterFragmentTerms();
mFragmentTransaction.add(R.id.register_container, mTerms);
mFragmentTransaction.commit();
Run Code Online (Sandbox Code Playgroud)

在我看来,视图被加载到RegisterActivity之上,并在方向更改时被清除.有可能解决我正在尝试做的事情吗?或者我实施错了吗?这是我的第一个Android应用程序:)

干杯

android android-appcompat android-fragments android-orientation

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

Express 无法在 NodeJS 应用程序中使用 Typescript

我正在学习 Typescript,并且已按照教程逐字使用它和express api 应用程序,但出现以下错误:

D:\Development\Node\Ed\TypeScript\src\app.ts:5
const app: Application = express();
                                ^
TypeError: express_1.default is not a function
    at Object.<anonymous> (D:\Development\Node\Ed\TypeScript\src\app.ts:5:33)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Module.m._compile (D:\Development\Node\Ed\TypeScript\node_modules\ts-node\src\index.ts:814:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Object.require.extensions.(anonymous function) [as .ts] (D:\Development\Node\Ed\TypeScript\node_modules\ts-node\src\index.ts:817:12)   
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
    at main (D:\Development\Node\Ed\TypeScript\node_modules\ts-node\src\bin.ts:226:14)
Run Code Online (Sandbox Code Playgroud)

我不知道如何修复,希望得到任何指示

应用程序.ts 文件:

import express, { Application, Request, Response, NextFunction } from 'express';

const app: Application = express();

app.get('/', (req: Request, res: Response, next: NextFunction) => {
    res.send('hello');
});

app.listen(5000, …
Run Code Online (Sandbox Code Playgroud)

node.js express typescript

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

如何在包含对象满足条件的 MySQL Json 列中获取对象数组的长度

我正在尝试查询包含对象数组的 Mysql json 列。我想要在对象中满足条件的数组的长度

JSON 数组示例:

[
    {"userId": 100, "type": 1, "status": 1},
    {"userId": 101, "type": 2, "status": 1},
]
Run Code Online (Sandbox Code Playgroud)

当前查询:

SELECT IFNULL(JSON_LENGTH(json_users), 0) AS my_count, post_id 
FROM posts WHERE post_id = 6421028173277829027 
AND json_contains(json_users, '{"type" : 1, "status": 1}');
Run Code Online (Sandbox Code Playgroud)

这将返回以下所需的

+------------+---------------------+
| my_count   | post_id             |
+------------+---------------------+
|          1 | 6421028173277829027 |
+------------+---------------------+
Run Code Online (Sandbox Code Playgroud)

但是,如果我将查询 where param 'type' 更改为 3

SELECT IFNULL(JSON_LENGTH(json_users), 0) AS my_count, post_id 
FROM posts WHERE post_id = 6421028173277829027 
AND json_contains(json_users, '{"type" : 3, "status": 1}');
Run Code Online (Sandbox Code Playgroud)

我得到一个空集。但我试图得到以下内容: …

mysql json

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

在侧面菜单页面上使用Ionic选项卡

我是离子框架的新手,并试图在侧面菜单页面上使用选项卡组件实现正常工作,但是页面之间的导航动画与左右滑动动画声明不起作用.

例如,存在保持侧菜单代码的基本状态(app)

.state('app', {
        url: '/app',
        abstract: true,
        templateUrl: "templates/menu.html",
        controller: "appController"
    })
Run Code Online (Sandbox Code Playgroud)

并将其加载到

<body>
    <ion-nav-view animation="slide-left-right"></ion-nav-view>
...
Run Code Online (Sandbox Code Playgroud)

侧面菜单页面加载了父级(app.pageOne,app.pageTwo等)

登录和注册页面在根目录下加载,因此不需要包含侧面菜单(登录,注册等)

我创建了一个标签模板,用于侧边菜单页面,其中包含标签的另一个基本状态

.state('app.tabs', {
        url: '/tab',
        abstract: true,
        views: {
            'menuContent' :{
                templateUrl: "templates/tabs.html"
            }
        }
    })
Run Code Online (Sandbox Code Playgroud)

并在侧面菜单视图中加载

<ion-nav-view name="menuContent" animation="slide-left-right"></ion-nav-view>
Run Code Online (Sandbox Code Playgroud)

现在,如果我有一个页面'app.pageOne'并导航到'app.pageTwo',幻灯片动画将按预期工作.

但是,如果我在标签页'app.tabs.home'并点击链接转到'app.pageTwo',导航栏不会更新,也不会有任何动画过渡.

我知道它看起来像是一个父母的孩子问题,但我无法解决它,任何想法?

国家如下,例如

login
register
app ____page1
   |____page2
   |____Tabs
          |____Home
          |____Contact etc
Run Code Online (Sandbox Code Playgroud)

page1动画到page2工作正常home2到page2没有动画(它只是直接加载)

希望更有意义.

angularjs angular-ui-router ionic-framework

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

对于快速路由,节点护照自定义回调是否可以作为中间件?

我正在用node.js创建一个简单的Rest Api,并且我用jwt令牌保护它,我已经设置了护照和passport-jwt来验证哪个工作正常,如果jwt令牌有错误或者它不存在,护照将发送401和正文"未经授权".我知道如何更改路由的错误,以通过执行以下操作发回我想要的自定义错误消息;

router.route('/test')
    .put(function(req, res, next) {
    passport.authenticate('jwt', { session: false }, function(err, user, info) {
        if (err) { return next(err); }
        if (!user) { return res.send("Custom Unauthorised").end();  }
        return res.send("Test Route Accessed").end();
    })(req, res, next);
});
Run Code Online (Sandbox Code Playgroud)

我有大约20条路线,我将它们命名为以下类似的路线;

router.route('/books/:id/authors').get(passport.authenticate('jwt', { session: false }), myRoutes.books.authors);
Run Code Online (Sandbox Code Playgroud)

现在您将注意到我将资源特定的路由存储在他们自己的文件中(即myRoutes.books),所以我的问题是,有没有办法让自定义回调作为中间件,不需要路由文件的重大重组?

干杯

node.js express jwt passport.js

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

为什么HashMap字符串值转换为大写?

我已经宣布了如下地图,

private Map<String, String> mUnsavedFields = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

如果我添加以下条目;

mUnsavedFields.put("username", "Batman");
Run Code Online (Sandbox Code Playgroud)

它按预期工作,但当我在循环中获取"用户名"键的值时,

Iterator it = mUnsavedFields.entrySet().iterator();
while (it.hasNext()) {
    Map.Entry pair = (Map.Entry)it.next();
    Timber.d("Key(%s), Value(%S)", pair.getKey(), pair.getValue());
    it.remove(); // avoids a ConcurrentModificationException
}
Run Code Online (Sandbox Code Playgroud)

它返回"BATMAN"全部大写.为什么会发生这种情况?如何保留其中的确切格式?

java hashmap

0
推荐指数
2
解决办法
64
查看次数