Aplicaciones de Windows
Contraer la tabla de contenido
Expandir la tabla de contenido

Inicio rápido: Administrar entradas de fuentes (aplicaciones de la Tienda Windows con JavaScript y HTML)

En este tema se muestra cómo acceder a un documento de servicio y modificar los recursos de las fuentes que contiene mediante el espacio de nombres Windows.Web.AtomPub, que es la implementación del protocolo de publicación Atom de Windows en tiempo de ejecución.

Requisitos previos

Los siguientes ejemplos usan JavaScript y se basan en la muestra de AtomPub. Si necesitas ayuda para crear una aplicación de la Tienda Windows de JavaScript, consulta el tema sobre cómo crear tu primera aplicación de la Tienda Windows con JavaScript. De forma adicional, en este tema se usan promesas de JavaScript para completar las operaciones asincrónicas. Si quieres obtener más información acerca de este modelo de programación, consulta el tema sobre programación asincrónica en JavaScript con promesas.

Para asegurarte de que la aplicación de la Tienda Windows está lista para la red, debes establecer la funcionalidad en el archivo Package.appxmanifest del proyecto. Para obtener una definición de cada funcionalidad de red, consulta el tema sobre el procedimiento para configurar las funcionalidades de aislamiento de red.

Instrucciones

1. Inicialización del cliente con credenciales de autenticación

En los ejemplos que siguen se usan las clases Windows.Web.AtomPub para las operaciones de administración de fuentes y las clases Windows.Web.Syndication para representar elementos de fuentes individuales. Además, la mayoría de los servicios de publicación web requiere algún tipo de autenticación, una funcionalidad proporcionada por el espacio de nombres Windows.Security.

En el siguiente ejemplo se muestra cómo configurar las credenciales e incluirlas en la inicialización de AtomPubClient.


function createClient() {
    client = new Windows.Web.AtomPub.AtomPubClient();
    client.bypassCacheOnRetrieve = true;

    if ((document.getElementById("userNameField").value !== "") && (document.getElementById("passwordField").value !== "")) {
        var credential = new Windows.Security.Credentials.PasswordCredential();
        credential.userName = document.getElementById("userNameField").value;
        credential.password = document.getElementById("passwordField").value;
        client.serverCredential = credential;
    }
    else {
        client.serverCredential = null;
    }
}

2. Recuperación de un documento de servicio

Un documento de servicio encapsula al menos un elemento del área de trabajo, que representa una o varias fuentes web sindicadas. Por ejemplo, se consideran áreas de trabajo las publicaciones web como blogs personales y páginas web.

Dentro del elemento del área de trabajo, los elementos de colección representan fuentes individuales, cada una con diversas entradas. La siguiente sintaxis es un ejemplo breve de un documento de servicio:

<?xml version="1.0" encoding='utf-8'?>
<service xmlns="http://www.w3.org/2007/app"
         xmlns:atom="http://www.w3.org/2005/Atom">
    <workspace>
        <atom:title>Main Site</atom:title>
        <collection
            href="http://example.org/blog/main" >
            <atom:title>My Blog Entries</atom:title>
            <categories
               href="http://example.com/cats/forMain.cats" />
        </collection>
        <collection
            href="http://example.org/blog/pic" >
            <atom:title>Pictures</atom:title>
            <accept>image/png</accept>
            <accept>image/jpeg</accept>
            <accept>image/gif</accept>
        </collection>
    </workspace>
</service>

Para recuperar un documento de servicio, pasa el Uri asociado a RetrieveServiceDocumentAsync.


function getServiceDocument (serviceUrl, processServiceDocumentCallback) {
    var uri = new Windows.Foundation.Uri(serviceUrl); 
    client.retrieveServiceDocumentAsync(uri).done(

    processServiceDocumentCallback
    );
}


Para recuperar, editar o eliminar entradas de fuentes específicas, la aplicación debe analizar un ServiceDocument recuperado para los URI absolutos asociados con las entradas individuales.


// Find the edit uri for the feed from the service document.
function findEditUri(serviceUri) {
    return client.retrieveServiceDocumentAsync(serviceUri).then(function (serviceDocument) {
        for (var i in serviceDocument.workspaces) {
            var workspace = serviceDocument.workspaces[i];
            for (var j in workspace.collections) {
                var collection = workspace.collections[j];

                if (collection.accepts.join(";") === "application/atom+xml;type=entry") {
                    return collection.uri;
                }
            }
        }

        return null;
    });
}


3. Creación de una entrada nueva en una colección

Se puede agregar una entrada nueva a una colección existente. Para ello, crea un objeto SyndicationItem nuevo y rellénalo con el contenido que quieras. Cuando el SyndicationItem esté listo, pasa el objeto, una cadena breve que describa la entrada y el Uri de la fuente para CreateResourceAsync.


function createPost (postUrl, postTitle, postContent, postSummary, postAuthor) {

    var uri = new Windows.Foundation.Uri(postUrl);
    syndicationItem = new Windows.Web.Syndication.SyndicationItem(postTitle,
        new Windows.Web.Syndication.SyndicationContent(postContent, Windows.Web.Syndication.SyndicationTextType.Text),
        null);
    syndicationItem.summary = new Windows.Web.Syndication.SyndicationText(postSummary);
    syndicationItem.authors[0] = new Windows.Web.Syndication.SyndicationPerson(postAuthor);

    client.createResourceAsync(uri, syndicationItem).done(
            
    outputCallback(uri)
    );
}


4. Edición de una entrada en una colección

Para editar una entrada existente en una colección, pasa el Uri asociado a RetrieveFeedAsync. Prepara un SyndicationItem con valores nuevos y pasa el objeto a UpdateResourceAsync junto con el Uri que usaste para recuperar la entrada.


function editPost (editUrl, postTitle, postContent, postSummary, postAuthor, refreshCallback) {

    var uri = new Windows.Foundation.Uri(editUrl);
    var syndicationItem;

    syndicationItem = new Windows.Web.Syndication.SyndicationItem();
    syndicationItem.title = new Windows.Web.Syndication.SyndicationText(postTitle);
    syndicationItem.summary = new Windows.Web.Syndication.SyndicationText(postSummary);
    syndicationItem.content = new Windows.Web.Syndication.SyndicationContent(postContent, Windows.Web.Syndication.SyndicationTextType.Text);
    syndicationItem.authors[0] = new Windows.Web.Syndication.SyndicationPerson(postAuthor);
    // Note: Also other item fields can be set such as 'syndicationItem.Categories[0]'

    client.updateResourceAsync(uri, syndicationItem).done(
              
    refreshCallback
    );
 }


5. Eliminación de una entrada de una colección

Para eliminar una entrada de una colección, pasa el Uri asociado a DeleteResourceAsync.


function deletePost(editUrl, refreshCallback) {
    var uri = new Windows.Foundation.Uri(editUrl);

    client.deleteResourceAsync(uri).done(

        refreshCallback
    );
}


Resumen y next steps

En este tema recuperamos un documento de servicio, agregamos entradas de colección nuevas y modificamos entradas existentes en el documento. Para obtener una demo rápida de una recuperación de fuentes básica, consulta Inicio rápido: acceder a una fuente web.

Temas relacionados

Muestra de AtomPub
Windows.Web.AtomPub
Windows.Web.Syndication
Inicio rápido: acceder a una fuente web

 

 

Mostrar:
© 2018 Microsoft