这是一个概念性问题.
我有一个客户端(移动)应用程序,需要支持针对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(请求)在有或没有有效凭据的情况下被授权.
我想在这方面听到一些合理的意见.处理这个问题的标准方法是什么,这是处理逻辑上合适的标准方法吗?
有没有人知道如何在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) MIDI中的127个音符值是否具有音乐意义(特定数量的八度音程等)?或者由于二进制文件格式设置为127,IE用于计算目的?
我目前有一个针对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是否存在仅允许单个连接的限制?还是我在这里为并行连接做错了什么?
我试图通过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上 - 我不记得文本是否出现在其他地方,但我现在关注的是图像部分.
是否有可用于管理用户帐户的meteor.js库?
我想让用户注册,可以访问唯一的用户ID来限制单个用户可以执行某些操作的次数,还有不同的用户层来控制访问权限.如果我不必自己建立这个就好了.