Как отправить многосекционную форму Google с помощью Swift и MoyaIOS

Программируем под IOS
Ответить
Anonymous
 Как отправить многосекционную форму Google с помощью Swift и Moya

Сообщение Anonymous »

Форма Google решает, какой раздел следует открыть, на основе текущего ответа.

Я пытаюсь программно отправить форму Google, разделенную на несколько разделов, с помощью Swift и платформы Moya.< /p>
Моя текущая реализация предполагает отправку POST-запроса непосредственно в конечную точку formResponse, которая работает для простых форм, но не может правильно обрабатывать многосекционные формы. Первоначальные ответы, такие как электронное письмо и ответ на основной вопрос, успешно записываются, но других ответов Google не получает.
Это то, что я использую для отправки запроса:

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

protocol SurveyTargetType: TargetType {
var baseURL: URL { get }
var sampleData: Data { get }
var timeoutLevel: RequestTimeoutLevel { get }
}

protocol SurveyAPI {
func createSurvey(params: [String: String]) -> AnyPublisher
}

final class DefaultSurveyAPI: SurveyAPI {
private let api: APIType

init(api: APIType) {
self.api = api
}

func createSurvey(params: [String: String]) -> AnyPublisher {
let queryItems = params.map { URLQueryItem(name: $0.key, value: $0.value) }
let target = SurveyTargets.SubmitSurvey(queryItems: queryItems)

return api.request(target: target)
.map { response in
return response.statusCode == 200
}
.eraseToAnyPublisher()
}
}

extension SurveyTargetType {
var baseURL: URL {
guard let url = URL(string: SurveyConfiguration.baseSurveyLink) else {
fatalError("Invalid base URL")
}
return url
}

var sampleData: Data { return Data() }
var timeoutLevel: RequestTimeoutLevel { .default }
}

enum SurveyTargets {
struct SubmitSurvey: SurveyTargetType {
let queryItems: [URLQueryItem]

var path: String { "" }
var method: Moya.Method { .post }

var parameters: [String: String] {
var param: [String: String] = [:]
for queryItem in queryItems {
param[queryItem.name] = queryItem.value
}
return param
}

var task: Task {
.requestParameters(parameters: parameters, encoding: URLEncoding.default)
}

var headers: [String : String]? {
return ["Content-Type": "application/x-www-form-urlencoded"]
}
}
}
URL-адрес формы (SurveyConfiguration.baseSurveyLink):

https://docs.google.com/forms/d/e/FORM_ID/formResponse< /п>

Подробнее здесь: https://stackoverflow.com/questions/786 ... t-and-moya
Ответить

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

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

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

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

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