小编Mat*_*att的帖子

RESTful登录失败:返回401或自定义响应

这是一个概念性问题.

我有一个客户端(移动)应用程序,需要支持针对RESTful Web服务的登录操作.由于Web服务是RESTful,这相当于客户端接受用户的用户名/密码,验证服务的用户名/密码,然后只记得发送该用户名/密码以及所有后续请求.

此Web服务中的所有其他响应均以JSON格式提供.

问题是,当我查询Web服务只是为了找出给定的用户名/密码是否有效时,Web服务是否总是以JSON数据响应,告诉我它成功或不成功,或者它应该返回HTTP 200的良好凭据和HTTP 401凭据不良凭证.

我问的原因是,即使您只是询问凭据是否有效,其他一些RESTful服务也会使用401作为错误的凭据.但是,我对401响应的理解是,它们代表了一个没有有效凭据就无法访问的资源.但是登录资源应该对任何人都可以访问,因为登录资源的全部目的是告诉您凭据是否有效.

换句话说,在我看来,请求如下:

myservice.com/this/is/a/user/action 
Run Code Online (Sandbox Code Playgroud)

如果提供了错误的凭据,则应返回401.但是请求如下:

myservice.com/are/these/credentials/valid
Run Code Online (Sandbox Code Playgroud)

永远不应该返回401,因为该特定URL(请求)在有或没有有效凭据的情况下被授权.

我想在这方面听到一些合理的意见.处理这个问题的标准方法是什么,这是处理逻辑上合适的标准方法吗?

rest login http http-response-codes

90
推荐指数
3
解决办法
7万
查看次数

Android蓝牙不安全Rfcomm的"服务发现失败"

有没有人知道如何在API级别2.3.3的2个Android设备之间创建不安全的RFCOMM连接,同时使用任意声明的服务名称?(不是随机或更改服务名称,只是我自己定义的服务名称)

细节

我试图在2个Android设备之间创建一个不安全的Rfcomm连接:Droid X2和华硕Transformer.我假设这两款设备都具有Android 2.3.3级别的功能,实际上可以使用不安全的Rfcomm.

当我尝试按照此处所述创建蓝牙连接时,使用now public createInsecureRfcommSocketToServiceRecord()和listenUsingInsecureRfcommWithServiceRecord(SERVICE,UUID),我得到一个报告:

java.io.IOException: Service discovery failed
at android.bluetooth.BluetoothSocket$SdpHelper.doSdp(BluetoothSocket.java:377)
at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:201)
at com.s4d.bluenomad.DeviceConnections$ClientThread.run(DeviceConnections.java:406)
Run Code Online (Sandbox Code Playgroud)

我发现了一个相关的问题,即有人创建正常连接时会收到此错误并使用反射来调用私有方法.但是,我不知道现在的私有方法会对应于启动"不安全"连接.我尝试使用相关问题中提出的解决方案,但Android要求我配对设备,这正是我需要避免的.我确实需要不安全的方法.

我甚至尝试了这里概述的官方和黑客解决方案的组合

相关代码片段

创建ServerThread以侦听连接

Log.i(TAG, "Constructing a ServerThread");
// Use a temporary object that is later assigned to serverSocket,
// because serverSocket is final
BluetoothServerSocket tmp = null;
try {
    // MY_UUID is the app's UUID string, also used by the client code
    tmp = btAdapter.listenUsingInsecureRfcommWithServiceRecord(SERVICE_NAME, SERVICE_UUID);
    Log.i(TAG,"Started listening on insecure RFCOMM channel for service …
Run Code Online (Sandbox Code Playgroud)

android bluetooth insecure-connection

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

为什么MIDI提供127个音符

MIDI中的127个音符值是否具有音乐意义(特定数量的八度音程等)?或者由于二进制文件格式设置为127,IE用于计算目的?

midi

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

PyBlueZ:创建多个客户端连接

我目前有一个针对PyBlueZ的客户端/服务器对。现在,服务器可以连接到顺序的客户端-它可以工作到与一个客户端完成连接,然后开始侦听另一个客户端。

但是,我真正想要的是在单独的线程中运行客户端通信,因此我同时拥有多个客户端。但是,当我尝试第二个客户端连接时,PyBlueZ会通告第一个客户端当前使用的端口。我正在建立这样的连接:

self.port = bluetooth.PORT_ANY
print "Accepting clients..."
self.server_sock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )
self.server_sock.bind(("",self.port))
self.server_sock.listen(5)
print "listening on port %d" % self.port

bluetooth.advertise_service( self.server_sock, MY_SERVICE, MY_UUID )

client_sock,address = self.server_sock.accept()
print "Accepted connection from ",address

commThread = ServerThread(client_sock, self.bn_id, self.bn_name, self.bn_thumbnail)
Run Code Online (Sandbox Code Playgroud)

同样,此代码对于顺序连接也能正常工作,但是当我并行尝试时,我的客户端从服务器的蓝牙系统收到“忙”响应。在客户端,我输出尝试连接的端口,并且始终显示端口“ 1”。

PyBlueZ是否存在仅允许单个连接的限制?还是我在这里为并行连接做错了什么?

python multithreading network-programming bluetooth

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

Android:通过Intent共享文本和图像(URL)

我试图通过ACTION_SEND意图与图像共享文本.问题是图像由URL表示,而不是本地URI.我目前的代码是:

Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("*/*");
shareIntent.putExtra(Intent.EXTRA_TEXT, text); // <- String
shareIntent.putExtra(Intent.EXTRA_STREAM, url); // <- URL object
Run Code Online (Sandbox Code Playgroud)

现在我尝试了一些变化.我尝试过使用setType("image/*"),我尝试从URL解析Uri,我尝试过传递URL字符串本身等等.到目前为止,似乎没有任何工作.但是,当发送到Twitter时,我确实看到了文本,而不是图像.

编辑:显然原始描述不够有用,所以....当我启动上述意图时,它成功打开了一个选定的应用程序,如Twitter,Facebook,Gmail或短信,但图像显示在这些应用程序中没有.文本出现在Twitter上 - 我不记得文本是否出现在其他地方,但我现在关注的是图像部分.

twitter android share facebook android-intent

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

是否有可用于管理用户帐户的meteor.js库?

是否有可用于管理用户帐户的meteor.js库?

我想让用户注册,可以访问唯一的用户ID来限制单个用户可以执行某些操作的次数,还有不同的用户层来控制访问权限.如果我不必自己建立这个就好了.

user-management account-management node.js meteor

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