Я пытаюсь программно отправить форму 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"]
}
}
}
https://docs.google.com/forms/d/e/FORM_ID/formResponse< /п>
Подробнее здесь: https://stackoverflow.com/questions/786 ... t-and-moya
Мобильная версия