Разница между данными, полученными в PHP с использованием file_get_contents ('php: // input') и с помощью $ _postPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Разница между данными, полученными в PHP с использованием file_get_contents ('php: // input') и с помощью $ _post

Сообщение Anonymous »

Я пытаюсь передать массив из мобильного устройства в конечную точку PHP, которую я пишу, и я борюсь с разницей между php: // input и $ _post переменные в файле php.
Когда я имею доступ к Php: // input, я могу написать:
, когда я имею доступ к Php: //, я могу написать:
.

Код: Выделить всё

$jsonString = file_get_contents('php://input');
$jsonArray = json_decode($jsonString, true);
< /code>
Отсюда я могу получить доступ к прошедшему массиву с помощью: < /p>
$messagesArr = $jsonArray['messages'];
< /code>
Если я распечатаю это, используя print_r, он отображается как массив, который я хочу: < /p>
Array
(
[0] => Array (
[role] => system
[content] => you are a friendly customer service agent
)
[1] => Array (
[role] => user
[content] => What is my remaining balance
)
[2] => Array (
[role] => user
[content] => As of right now
)
)
< /code>
Редактировать: < /p>
Однако, когда данные поступают через $ _post, как в данном случае как данные с несколькими частями, я получаю другой результат: < /p>
$messagesStr = $_POST['messages'];
$messagesStrNo = stripcslashes($messagesStr);
< /code>
Если я распечатаю его, используя print_r, это является строкой следующим образом: < /p>
[[\"content\": \"You are a friendly customer service agent\", \"role\": \"system\"], [\"role\": \"user\", \"content\": \"What is my remaining balance\"], [\"content\": \"As of right now\", \"role\": \"user\"]]
Как я могу преобразовать версию $ _post , которая, по -видимому, является строкой для версии php: // входной версии, которая в форме массива, которая мне нужно. Сторона: < /p>

Код: Выделить всё

let questionsArr: [[String: Any]] = [
["role": "system", "content": "You are a friendly customer service agent"],
["role": "user", "content" : "What is my remaining balance"],
["role": "user", "content" : "As of right now"]
]
let mydata = ["customerid": "21",
"messages":questionsArr] as [String : Any]

var request = URLRequest(url: url)
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
var body = Data()
let mimetype = "application/octet-stream"
body.append("--\(boundary)\r\n".data(using: String.Encoding.utf8)!)
//This is where messages is added
for (key, value) in mydata {
body.append("--\(boundary)\r\n".data(using: String.Encoding.utf8)!)
body.append("Content-Disposition: form-data; name=\"\(key)\"\r\n".data(using: String.Encoding.utf8)!)
body.append("\r\n".data(using: String.Encoding.utf8)!)
body.append("\(value)\r\n".data(using: String.Encoding.utf8)!)
}
// Add file
body.append("--\(boundary)\r\n".data(using: String.Encoding.utf8)!)

body.append("Content-Disposition: form-data; name=\"uploaded_file\"; filename=\"startimage.png\"\r\n".data(using: String.Encoding.utf8)!)

body.append("Content-Type: \(mimetype)\r\n\r\n".data(using: String.Encoding.utf8)!)
if let imageData = image?.pngData() {
body.append(imageData as Data)
}
body.append("\r\n".data(using: String.Encoding.utf8)!)
body.append("\r\n".data(using: String.Encoding.utf8)!)
//Add final boundary
body.append("--\(boundary)--\r\n".data(using: String.Encoding.utf8)!)
request.httpBody = body//MULTIPART REQUEST
request.httpMethod = "POST"
Спасибо за любые предложения.

Подробнее здесь: https://stackoverflow.com/questions/796 ... hp-input-a
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»