python spyne服务-base64字符串转义
我有一个简单的spyne服务:python spyne服务-base64字符串转义,python,base64,spyne,Python,Base64,Spyne,我有一个简单的spyne服务: class JiraAdapter(ServiceBase): @srpc(Unicode, String, Unicode, _returns=Status) def CreateJiraIssueWithBase64Attachment(summary, base64attachment, attachment_filename): status = Status try: newkey
class JiraAdapter(ServiceBase):
@srpc(Unicode, String, Unicode, _returns=Status)
def CreateJiraIssueWithBase64Attachment(summary, base64attachment, attachment_filename):
status = Status
try:
newkey = jira_client.createWithBase64Attachment(summary, base64attachment, attachment_filename)
status.Code = StatusCodes.IssueCreated
status.Message = unicode(newkey)
except Exception as e:
status.Code = StatusCodes.InternalError
status.Message = u'Internal Exception: %s' % e.message
return status
问题是,某些程序会在生成的base64string中插入“\n”,大约每60个字符后插入一个“\n”,然后它会进入服务的转义方法(“\\n”),导致行为异常。是否有设置或其他方法可以避免这种情况?首先,请对您发布的代码发表一些评论:
status=status()
而不是status=status
)。实际上,您正在状态
类上设置类属性。这不仅是错误的,您还通过在没有正确锁定的情况下更改全局状态来创造竞争条件ByteArray
为您处理base64编码/解码。请注意,ByteArray
作为字符串序列进行反序列化Base64String = String(pattern='[0-9a-zA-Z/+=]+')
。。。并使用它代替普通的字符串
和验证,轻松地拒绝无效输入base64attachment=base64attachment.decode('string-escape')
将是最好的解决方案
我希望这有帮助
致以最诚挚的问候,string.decode('string-escape')是一种简单的解决方法,但是我想知道是否有一个服务级别设置可以避免将来出现这些修复。另外请注意:。我不知道它是否会达到2.10,但它会发生。