首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用PHP发布下一个查询?

如何使用PHP发布下一个查询?
EN

Stack Overflow用户
提问于 2018-03-08 20:26:17
回答 1查看 81关注 0票数 0

如何使用PHP发布下一个查询?

帖子:

代码语言:javascript
复制
https://us-gmsg.np.community.playstation.net/groupMessaging/v1/messageGroups/~49C69E58E4393CF0.6F4B0B40F84663A7/messages

标头:

代码语言:javascript
复制
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:51.0) Gecko/20100101 Firefox/51.0
Authorization: Bearer 0e064512-9c63-48f7-9e93-f475a55893a8
Content-Type: multipart/mixed; boundary="---------------------------19111"

正文:

代码语言:javascript
复制
-----------------------------19111
Content-Type: application/json; charset=utf-8
Content-Description: message

{"message":{"messageKind":1,"body":"ok"}}
-----------------------------19111--

到目前为止,我已经尝试了:

代码语言:javascript
复制
<?php
$url = "https://us-gmsg.np.community.playstation.net/groupMessaging/v1/messageGroups/~49C69E58E4393CF0.6F4B0B40F84663A7/messages";
$data = array('-----------------------------19111', 'Content-Type' => 'application/json; charset=utf-8', 'Content-Description' => 'message', '{"message":{"messageKind":1,"body":"ok"}}');
$options = array(
'http' => array(
'header'  => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:51.0) Gecko/20100101 Firefox/51.0".
         "Authorization: Bearer 0e064512-9c63-48f7-9e93-f475a55893a8".
         "Content-Type: multipart/mixed; boundary="---------------------------19111""
'method'=>"POST",
'content'=>http_build_query($data)
));
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
echo $result;
?>

但是它不工作,我如何发送查询?

EN

回答 1

Stack Overflow用户

发布于 2019-07-11 21:10:08

代码语言:javascript
复制
import simplejson
import json
import requests
import random
from hyper import HTTP20Connection
import logging
import os.path
from psnapi.User import User

class Messaging:

    oauth = None
    refresh_token = None
    me = None

    MESSAGE_THREADS_URL = 'https://es-gmsg.np.community.playstation.net/groupMessaging/v1/threads'
    MESSAGE_USERS_URL = 'https://es-gmsg.np.community.playstation.net/groupMessaging/v1/users/'
    SEND_MESSAGE_URL = 'https://es-gmsg.np.community.playstation.net/groupMessaging/v1/messageGroups/'

    def __init__(self, tokens):
        self.oauth = tokens['oauth']
        self.refresh_token = tokens['refresh']

        tokens = {
            'oauth': self.oauth,
            'refresh': self.refresh_token
        }

        user = User(tokens)
        self.me = user.me()['profile']['onlineId']

    def get_all_groups(self):
        header = {
            'Authorization': 'Bearer '+self.oauth
        }

        url = self.MESSAGE_THREADS_URL + "/?fields=threadMembers,threadNameDetail,threadThumbnailDetail,threadProperty,latestMessageEventDetail,latestTakedownEventDetail,newArrivalEventDetail&limit=200&offset=0"
        response = requests.get(url, headers=header).text
        data = json.loads(response)

        return data

    def get_favorite_groups(self):
        header = {
            'Authorization': 'Bearer '+self.oauth
        }

        url = self.MESSAGE_THREADS_URL + "/?fields=threadMembers,threadNameDetail,threadThumbnailDetail,threadProperty,latestMessageEventDetail,latestTakedownEventDetail,newArrivalEventDetail&limit=200&offset=0&filter=favorite"
        response = requests.get(url, headers=header).text
        data = json.loads(response)

        return data

    def remove_group(self, group_id):
        header = {
            'Authorization': 'Bearer '+self.oauth
        }

        url = self.MESSAGE_THREADS_URL + "/" + group_id + "/users/me"
        response = requests.remove(url, headers=header)

    def favorite_group(self, group_id):
        self.set_favorite_group(group_id, True)

    def unfavorite_group(self, group_id):
        self.set_favorite_group(group_id, False);

    def set_favorite_group(self, group_id, flag):
        headers = {
            'Content-Type': 'application/json',
            'Authorization': 'Bearer ' + self.oauth
        }

        url = self.MESSAGE_USERS_URL  + "me/threads/" + group_id + "/favorites"

        payload = {"favoriteDetail": {"favoriteFlag": flag}}
        payload = json.dumps(payload)

        response = requests.put(url, headers=header, data=payload)

    def send_message(self, thread_id, message_text = "", attachment = "", message_type = 1, audio_length = ""):

        boundary = "---------------------------"+str(random.sample(range(10000, 99999), 1)[0])
        header = {
            'origin': 'https://my.playstation.com',
            'Authorization': 'Bearer ' + self.oauth,
            'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:59.0) Gecko/20100101 Firefox/59.0',
            'Content-Type': 'multipart/mixed; boundary='+boundary,
            'accept-encoding': 'gzip, deflate, br',
            'accept': '*/*',
            'dnt': '1',

        }

        headers_auth = {
            'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:59.0) Gecko/20100101 Firefox/59.0',
            'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
            'accept-language': 'es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3',
            'accept-encoding': 'gzip, deflate, br',
            'access-control-request-method': 'POST',
            'access-control-request-headers': 'authorization,content-type',
            'origin': 'https://my.playstation.com',
            'dnt': '1'
        }

        message_body = {
            "message": {
                "messageKind": 1,
                "body": message_text
            }
        }

        message = "\r\n"
        message += boundary+"\r\n"
        message += "Content-Type: application/json; charset=utf-8\r\n"
        message += "Content-Description: message\r\n"
        message += "\r\n"
        message += json.dumps(message_body) + "\r\n"
        message += boundary + "--\r\n"


        conn = HTTP20Connection("es-gmsg.np.community.playstation.net:443")
        auth = conn.request('OPTIONS', "/groupMessaging/v1/messageGroups/"+thread_id+"/messages", headers=headers_auth)
        auth_response = conn.get_response(auth)
        request = conn.request('POST', "/groupMessaging/v1/messageGroups/"+thread_id+"/messages", headers=header, body=message)
        response = conn.get_response(request)
        print(response.read())

        return response


        '''
        users_body = {
            "threadDetail": {
                "threadMembers": {}
            }
        }

        if (isinstance(psn_ids, list)):
            i = 0
            for psn_id in psn_ids:
                users_body["threadDetail"]["threadMembers"][i] = {"onlineId": psn_id}
                ++i
        else:
            users_body["threadDetail"]["threadMembers"][0] = {"onlineId": psn_ids}

        users_body["threadDetail"]["threadMembers"][len(users_body["threadDetail"]["threadMembers"])] = {"onlineId": self.me}

        message = "\n"
        message += "--gc0p4Jq0M2Yt08jU534c0p\n"
        message += "Content-Type: application/json; charset=utf-8\n"
        message += "Content-Disposition: form-data; name=\"threadDetail\"\n"
        message += "\n"

        message += json.dumps(users_body) + "\n"

        message_body = {
            "messageEventDetail": {

                "messageDetail": {},
                "eventCategoryCode": message_type
            }
        }
        if (message_type == 1011):
            message_body["messageEventDetail"]["messageDetail"]["voiceDetail"]["playbackTime"] = audio_length

        message_body["messageEventDetail"]["messageDetail"]["body"] = message_text

        if (os.path.isfile(attachment)):
            attachment_content = attachment.bytes()
            attachment_length  = len(attachment_content)

        if (message_type == 1011):
            content_key = "voiceData"
            content_type = "audio/3gpp"
        elif (message_type == 3):
            content_key = "imageData"
            content_type = "image/jpeg"

        if (bool(attachment)):
            message += "\n"
            message += "--gc0p4Jq0M2Yt08jU534c0p\n"
            message += "Content-Type: application/json; charset=utf-8\n"
            message += "Content-Disposition: form-data; name=\"messageEventDetail\"\n"
            message += "\n"

            message += json.dumps(message_body) + "\n"

            message += "--gc0p4Jq0M2Yt08jU534c0p\n"
            message += "Content-Type: ContentType\n"
            message += "Content-Disposition: form-data;name=\"" + content_key + "\"\n"
            message += "Content-Transfer-Encoding: binary\n"
            message += "Content-Length: AttachmentLength\n"
            message += "\n"

            message += attachment_content + "\n"

            message += "--gc0p4Jq0M2Yt08jU534c0p--\n\n"
        else:
            message += "\n"
            message += "--gc0p4Jq0M2Yt08jU534c0p\n"
            message += "Content-Type: application/json; charset=utf-8\n"
            message += "Content-Disposition: form-data; name=\"messageEventDetail\"\n"
            message += "\n"

            message += json.dumps(message_body) + "\n"

            message += "--gc0p4Jq0M2Yt08jU534c0p--\n\n"

        s = requests.Session()
        s.mount(self.SEND_MESSAGE_URL+thread_id+"/messages", HTTP20Adapter())
        response = requests.Request('POST', self.SEND_MESSAGE_URL+thread_id+"/messages", headers=header, data=message)
        request = response.prepare()
        self.pretty_print_POST(request)
        '''

    def send_group_message(self, group_id, message_text = "", attachment = "", message_type = 1, audio_length = ""):
        header = {
            'Authorization': 'Bearer ' + self.oauth,
            'Content-Type': 'multipart/form-data; boundary="gc0p4Jq0M2Yt08jU534c0p"',
        }

        message_body = {
            "messageEventDetail": {
                "messageDetail": {

                },
                "eventCategoryCode": message_type
            }
        }
        if (message_type == 1011):
            message_body["messageEventDetail"]["messageDetail"]["voiceDetail"]["playbackTime"] = audio_length

        message_body["messageEventDetail"]["messageDetail"]["body"] = message_text

        if (os.path.isfile(attachment)):
            attachment_content = attachment.bytes()
            attachment_length  = strlen(attachment_content)

        if (message_type == 1011):
            content_key = "voiceData"
            content_type = "audio/3gpp"

        elif (message_type == 3):
            content_key = "imageData"
            content_type = "image/jpeg"

        if (bool(attachment)):
            message = "\n"
            message += "--gc0p4Jq0M2Yt08jU534c0p\n"
            message += "Content-Type: application/json; charset=utf-8\n"
            message += "Content-Disposition: form-data; name=\"messageEventDetail\"\n"
            message += "\n"

            message += json.dumps(message_body) + "\n"

            message += "--gc0p4Jq0M2Yt08jU534c0p\n"
            message += "Content-Type: ContentType\n"
            message += "Content-Disposition: form-data;name=\"" + content_key + "\"\n"
            message += "Content-Transfer-Encoding: binary\n"
            message += "Content-Length: AttachmentLength\n"
            message += "\n"

            message += attachment_content + "\n"

            message += "--gc0p4Jq0M2Yt08jU534c0p--\n\n"
        else:
            message = "\n"
            message += "--gc0p4Jq0M2Yt08jU534c0p\n"
            message += "Content-Type: application/json; charset=utf-8\n"
            message += "Content-Disposition: form-data; name=\"messageEventDetail\"\n"
            message += "\n"

            message += json.dumps(message_body) + "\n"

            message += "--gc0p4Jq0M2Yt08jU534c0p--\n\n"
            response = requests.post(self.MESSAGE_THREADS_URL +  '/' + group_id + '/messages', headers=header, data=message).text

        return json.loads(response)

    def get_messages(self, group_id):
        header = {
            'Authorization': 'Bearer ' + self.oauth
        }
        url = self.MESSAGE_THREADS_URL + '/' + group_id + '?count=200&fields=threadMembers,threadNameDetail,threadThumbnailDetail,threadProperty,latestTakedownEventDetail,newArrivalEventDetail,threadEvents'
        response = requests.get(url, headers=header)
        data = json.loads(response.text)

        return data
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49173078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档