首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对角7中的webservice进行POST API调用?

如何对角7中的webservice进行POST API调用?
EN

Stack Overflow用户
提问于 2019-07-31 11:26:40
回答 2查看 54关注 0票数 0

我需要将数据发送到文本挖掘web服务以从中提取元数据。在下面的文档之后,我想出了下面的代码,但是在第一行中得到了var的错误。

我尝试用data:string替换var数据来声明变量,但是它没有工作。

代码语言:javascript
复制
var data = "<?xml version=\"1.0\" *XML Data*";

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
        console.log(this.responseText);
    }
});

xhr.open("POST", "http://localhost:40002/");
xhr.setRequestHeader("cookie", "JSESSIONID=1gsl3g26oa2l71jmauv312tub9");
xhr.setRequestHeader("content-type", "application/xml");

xhr.send(data);

错误信息是

“意外令牌。需要构造函数、方法、访问器或属性。”

EN

回答 2

Stack Overflow用户

发布于 2019-07-31 11:53:07

希望您使用的是角2+版本。以下是步骤

代码语言:javascript
复制
//import the HttpClient
import { HttpClient } from '@angular/common/http';

//initialize the same in the constructor
constructor(private http: HttpClient){}

//Use the HttpClient instance http to post the call

var fd = new FormData();
   let username = environment.username;
   let password = environment.password;
   let authToken = btoa(username + ":" + password);

   const httpOptions = {
      headers: new HttpHeaders({
        'Accept': 'application/vnd.emc.documentum+json',
        'Authorization': 'Basic ' + authToken,
      })
    };

    fd.append('data', JSON.stringify(docObj));
    this.http.post(URL, fd, httpOptions);
票数 0
EN

Stack Overflow用户

发布于 2019-07-31 12:06:53

它建议使用角HTTPClient从角2.0。最好是将服务api与角组件分开,这样就可以重用它们。按以下方式编写服务

使用角HTTPClient myservice.ts编写服务

代码语言:javascript
复制
import { Injectable } from '@angular/core';
import { HttpClient, HttpParams, HttpResponse } from '@angular/common/http'; //HttpClient is an improved replacement for Http. They expect to deprecate Http in Angular 5 and remove it in a later version.
import { HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { environment } from '../../environments/environment'

let httpOptions: HttpHeaders = new HttpHeaders();
httpOptions = httpOptions.append('Accept', 'text/html, application/xhtml+xml, */*');
httpOptions = httpOptions.append('Content-type', 'application/text/octet-stream');
httpOptions = httpOptions.append('Authorization', 'my-auth-token');
httpOptions = httpOptions.append('Cache-Control', 'no-cache, must-revalidate');
//other headers as per your requirement

@Injectable({
  providedIn: 'root'
})
export class DemoGetService {

  statusurl = '/getStatus'; // provide full url of server id thats what you prefer or specify the server url in environment.ts file
  statusparamsurl = '/getStatusWithParams';
  serverdataurl = '/getDataFromServer';

  http: HttpClient;

constructor(http: HttpClient) {
     this.http = http;
}
/** GET data from the server */
getServerStatus() {
  return this.http.get(environment.endpointbaseurl + this.statusurl, { headers: httpOptions , responseType: 'text'})
  // return this.http.get(this.statusurl, { headers: httpOptions , responseType: 'text'}) // if you declared statusurl with fullpath
}
getServerStatusWithParameters(param1, param2) {
  return this.http.get(environment.endpointbaseurl + this.statusparamsurl, { headers: httpOptions, params: { param1: param1, param2: param2 }, responseType: 'text' }) 
}

getServerData(param1,param2): Observable<MyDataObservable[]> { 
    return this.http.get<MyDataObservable[]>(environment.endpointbaseurl + this.serverdataurl, { params: { param1: param1, param2: param2 } }) 
    }
}

在角度分量中,调用服务调用如下所示

代码语言:javascript
复制
ngOnInit(){
this.MakeServerCall
}
MakeServerCall()
{
    this.Getp4000Service.getBlockConverterParameters()
    .subscribe(response => { 
        // parse response from server
     },
         function(error) { console.log("Error happended" + error.error.text); });
  }

邮政服务也可以非常类似地进行。

代码语言:javascript
复制
sendData( parameters) : Observable<MyDataType> {
      return this.http.post<MyDataType>(environment.endpointbaseurl + this.serverurl, parameters, httpOptions)
}

在有可观测值的地方,需要指定它们的结构。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57289687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档