我正在 swift 3 xcode 8 中创建一个应用程序,他们告诉我,为了让我访问 web 服务,我需要发送两个对象,他们用 ajax 向我发送了以下示例,我该如何使用 xcode 8 呢?
$("#cargar").click(function() {
/*datosRegistro = {
'user' : $("#user").val(),
'pass' : $("#pass").val()
};*/
Datos = {
"usr_username" : "usuario",
"usr_password" : "contrasenia"
};
datosRegistro = {
"Accion" : 2 , //2 es obligatorio para login
"Datos" : Datos
};
$.ajax({
url: 'http://mihost/server/sitio.php',
data: {'datosRegistro': JSON.stringify(datosRegistro) },
type: 'POST',
dataType: 'json',
async: false,
success: function(p, estado, xhr) {
// Para atrapar otros posibles errores
try {
// Asigna el objeto de retorno
objRetorno = JSON.parse(p);
// Valida el error controlado
if ( objRetorno.Error == true ) {
// Informa el error al usuario
// Muestra el mensaje (cambia icono y pone mensaje)
alert(objRetorno.Mensaje);
// Termina el procedimiento
return false;
}
else
{
//aqui escribes el codigo en caso de ser correctos los datos
return true;
}
}
catch(error){
// Notifica el error al usuario
alert( "Excepcion encontrada al recuperar cadena JSON.\n\nDetalles : " + error.message ) ;
}
},
error: function(xhr, estado, errata) {
// Informa el error interno al usuario
alert('La accion no pudo ser procesada correctamente...');
// Termina el procedimiento
return false;
},
dataType: 'html'
}); // Termina la llamada AJAX
})
编辑:
我通过扩展一些细节来修改问题。
(一个)。网络服务
Swift 通过 URL 向 Web 服务发送请求并返回 JSON。当你收到它时,你会在 Swift 中处理(解析)它,如(b) 中所述。
让 Web 服务返回,例如:
您必须知道如何构建您的 URL,任何管理 Web 服务的人都会告诉您。在您的情况下,URL 的(虚构)示例将是:
如您所见,您向 Web 服务发送了两个由 & 分隔的参数,它接收并使用它来查询您想要的数据并返回正确的 JSON,如果不是错误的。
您甚至可以通过将 URL 放在任何浏览器中来测试 Web 服务是否返回您期望的结果。如果你在浏览器中这样写:
https://reqres.in/api/users/1
你会得到可以在屏幕上看到的结果:请注意 URL 的优雅。通过它,Web 服务请求的是它为您提供 id=1 的用户的数据。
在您的情况下,一个优雅或友好的 URL 将是:
http://sipot.conanp.gob.mx/server/pasaportes/usuario/878
您在其中询问 id=878 的用户的护照数据。但正如我之前所说,这取决于 Web 服务程序员。重要的是它运行良好,发送您请求的数据并由您来处理它。(b)。在 Swift 中处理从 Web 服务(或 api)接收的数据
收到您的数据,在本例中为 JSON,您可以在 Swift 中处理它。在此示例中,JSON 存储在变量
parsedData
中。例子:
这可能很有帮助:Apple Swift Help
当我发出请求时,Web 服务会响应:
{"Error":true,"Message":"您试图入侵我们,或者您没有正确发送信息","Account":0,"Data":null}
网络服务负责人告诉我,他回答是因为我没有向他发送数据,也没有正确发送数据。因此,我不知道如何快速做到这一点,它告诉我必须像上面提到的那样发送对象。但我不知道这是否可以用swift完成。非常感谢您的帮助。
最安全的事情是您有一个可以向其发出请求的 URL,例如
http://webservice.com/file.php在这里您必须使用他们要求的参数来构建链,但管理员必须告诉您如何传递它们。
例如,如果您传递了一个 Id,但他们试图在他们的 Web 服务中将其验证为 iduser,它将失败。
您将必须构建 URL,例如:http ://webservice.com/file.php?id=1234&key=2345 (我建议您以小写形式传递变量,而不是 Id,因为您必须传递 id )。无论如何,正如同事所评论的那样,您必须询问他们如何向他们提供数据:如果他们以名称“idusuario”查找变量并且您将其传递给“id”,它总是会失败,但是这是他们必须为您澄清的事情;)