Программа выдает 2 ошибки:
POST https://vision.googleapis.com/v1/images:annotate?key=APIKEY
ИСКЛЮЧЕНИЕ: Ответ со статусом: 400 OK для URL:
Я провел некоторое исследование относительно этой ошибки: если возврат перечисления в порядке для URL-адреса, это означает, что URL-адрес в порядке и возвращает успех.
источник: https://cloud.google.com/vision/docs/reference/rest/v1/Code
Прежде чем я добавлю функцию обрезки, API может работать, однако здесь выдается ошибка. Я не ошибаюсь, если я объявлю 2 класса обслуживания внутри поставщика в app.components.ts?. Логика программы состоит в том, чтобы сделать снимок списка, а затем программа приведет пользователя на страницу обрезки, может обрезать изображение, а затем программа передаст изображение обратно на страницу camera.ts, где оно передаст изображение методу getVision(), который отправит изображение в googleAPI, а console.log() текст внутри изображения. Ниже приведены коды
@Component({
templateUrl: 'app.html',
providers:[CameraService,TestService]
})
export class MyApp {
rootPage = TabsPage;
constructor(platform: Platform) {
platform.ready().then(() => {
StatusBar.styleDefault();
Splashscreen.hide();
});
}
}
тестирование-service.ts
@Injectable()
export class TestService {
apiKeys = {
cloudVision :'ApiKey',
};
apiUrls = {
cloudVision : 'https://vision.googleapis.com/v1/images:annotate?key=',
};
visionPostObj = {
requests : [
{
image : {
content : ''
},
features: {
type: 'TEXT_DETECTION',
maxResults: 1
}
}
]
};
static get parameters() {
return [[Http]];
}
constructor(private http: Http) {
console.log('Hello CameraService Provider');
}
getVisionLabels( image : string){
let url = this.apiUrls.cloudVision + this.apiKeys.cloudVision;
let post = this.visionPostObj;
post.requests[0].image.content = image;
return this.http.post(url, post).map( (res) => res.json());
}
камера.тс
constructor(public navCtrl: NavController, public navParams: NavParams,public testService: TestService,public cameraService: CameraService,public toastCtrl: ToastController) {
}
addPhoto(){
this.cameraService.getImage(this.width,this.height,this.quality)
.subscribe( (data) => {
this.image = data;
this.getVision(this.image);
//console.log(this.image);
},(error) => {
// Toast errot and return DEFAULT_PHOTO from Constants
this.toast(error);
}
);
}
toast(message: string) {
let toast = this.toastCtrl.create({
message: message,
duration: 2500,
showCloseButton: false
});
toast.present();
}
getVision(image64: string) {
this.testService.getVisionLabels(image64)
.subscribe((sub) => {
this.labels = sub.responses[0].textAnnotations;
this.getText();
});
}
getText() {
this.labels.forEach((label) => {
let translation = {search: label.description, result: ''};
console.log(label.description);
});
}
}